Ruby中的timeout机制是这样的:给timeout设置一个超时时限,若timeout后面的块内容执行时间超过了此时限,则引发异常,若没有超过此时限,则按原流程执行,相当于没有timeout。
例1
1 2 3 4 5 6 7 8 |
require 'timeout' begin timeout(1){sleep(2)} rescue Exception puts 'timeout' ensure puts '!!!!!' end |
例2
1 2 3 4 5 6 7 8 9 |
require 'timeout' begin timeout(2){sleep(1)} rescue Exception puts 'timeout' ensure puts '!!!!!' end |