使用Rails在Net :: HTTP :: Get.new中设置自定义超时

sko*_*ozz 6 http ruby-on-rails-3 ruby-on-rails-4

我正在使用此代码来抓取外部html文件

link = URI.parse(url)
request = Net::HTTP::Get.new(link.path)
response = Net::HTTP.start(link.host, link.port) {|http|
  http.request(request)
}
Run Code Online (Sandbox Code Playgroud)

效果很好,但网页速度慢有时会响应超时,所以我需要为每个连接设置一个超时限制.任何的想法?

Kum*_*rsh 12

您需要设置read_timeout属性.

link = URI.parse(url)
request = Net::HTTP::Get.new(link.path)
begin
  response = Net::HTTP.start(link.host, link.port) {|http|
    http.read_timeout = 100 #Default is 60 seconds
    http.request(request)
  }
rescue Net::ReadTimeout => e  
   puts e.message
end
Run Code Online (Sandbox Code Playgroud)