小编Fli*_*ubt的帖子

超时::错误不是在Ruby中拯救

我仍然是Ruby的新手,我第一次尝试将Timeout用于某些HTTP功能,但显然我在某个地方错过了标记.我的代码如下,但它不起作用.相反,它引发了以下异常:

C:/Ruby193/lib/ruby/1.9.1/net/http.rb:762:in `initialize': execution expired (Timeout::Error)
Run Code Online (Sandbox Code Playgroud)

这对我来说没有多大意义,因为它的超时代码部分包含在开始/救援/结束块中,特别是救出Timeout :: Error.我做错了什么,或者Ruby中不支持的东西?

    retries = 10
    Timeout::timeout(5) do
      begin
        File.open("#{$temp}\\http.log", 'w') { |f|
          http.request(request) do |str|
            f.write str.body
          end
        }
      rescue Timeout::Error
        if retries > 0
          print "Timeout - Retrying..."
          retries -= 1
          retry
        else
          puts "ERROR: Not responding after 10 retries!  Giving up!")
          exit
        end
      end
    end
Run Code Online (Sandbox Code Playgroud)

ruby timeout http

4
推荐指数
1
解决办法
7835
查看次数

标签 统计

http ×1

ruby ×1

timeout ×1