ruby的Timeout

作者:周星 发布:2017-10-07

       在现实工作中,我们经常会遇到一些问题,比如说发送一个 http 请求半天得不到响应,或者抓取一个页面迟迟得不到结果,程序可能会因为这种“超时”情况一直卡住,ruby 提供了一个 Timeout 模块,可以很好的帮我们处理这种问题。

要使用 Timeout 模块,我们需要手动 require进来,然后可以直接使用 timeout 方法,请看下面的例子:

#!/usr/bin/ruby
require 'timeout'

begin
  timeout(0.1){
    sleep(0.2)
  }
rescue Timeout::Error => e
  puts e.message
end

       timeout 里的参数为时间,单位为秒,把 timeout 写在 begin 块里,当 timeout 语句块执行的时间超过了传入的时间,则后面的 rescue 会捕获到这个异常,你可以猜到整个代码执行会输出什么了吧,配合之前讲的 retry,我们就可以做更多的事情了,比如:抓取超时则 retry,retry 三次则放弃等

支付宝扫码赞助博主


评论(0)