Ruby - 增加代理请求超时

时间:2013-06-05 12:28:33

标签: ruby-on-rails ruby proxy net-http

我正在尝试通过一些代理服务器访问某些内容,但我得到:

<Errno::ETIMEDOUT: Connection timed out - connect(2)>

我修改了代码并尝试增加超时,如下所示:

require 'open-uri'
require 'net/http'


response = Net::HTTP::Proxy(proxy_ip, proxy_port).get_response(uri.host, uri.path)
response.start(uri.host) do |http|
  http.open_timeout = 5 
  http.read_timeout = 10
end

现在它没有重新定义open_timeoutstart

undefined method `open_timeout=' for #<Net::HTTPOK 200 OK readbody=true>>
undefined method `start..

任何帮助?

1 个答案:

答案 0 :(得分:1)

当您在代理(HTTP)课程上调用get_response时,您会收到Net::HTTPResponse个实例,但它不会回复startopen_timeout=

使用Net::HTTP::Proxy创建代理HTTP类,创建该类的实例,然后修改该实例上的超时设置。然后,您可以使用该实例从代理服务器后面获取内容。

proxy_http = Net::HTTP.Proxy(proxy_ip, proxy_port).new(uri.host)
proxy_http.open_timeout = 5
proxy_http.read_timeout = 10
response = proxy_http.get(uri.path)