如何处理ruby Net / HTTP中的连接超时错误?

时间:2013-12-21 22:29:42

标签: ruby connection

我尝试这段代码,但是当代理太慢时,我得到连接超时错误。我怎么解决这个问题?我尝试过异常处理,但不起作用。有人可以帮忙吗?

 Net::HTTP.new('example.com', nil, '140.113.182.81', '808').start { |http|  

      begin   
        response = http.request  
        p response  
      rescue Timeout::Error  
        p 'timed out'   
      end  
    }  

1 个答案:

答案 0 :(得分:1)

Timeout :: Error由Net::HTTP.connect执行的start方法引发,而不是由request执行。

这意味着为了挽救超时,整个Net::HTTP调用应该在开始块内。

  begin   
    Net::HTTP.new('example.com', nil, '140.113.182.81', '808').start do |http|  
      response = http.request  
      p response  
    end
  rescue Timeout::Error  
    p 'timed out'   
  end