【问题标题】:Set custom timeout in Net::HTTP::Get.new with Rails使用 Rails 在 Net::HTTP::Get.new 中设置自定义超时
【发布时间】:2014-01-05 16:00:02
【问题描述】:

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

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

效果很好,但网页速度变慢有时会响应超时,因此我需要为每个连接设置超时限制。有什么想法吗?

【问题讨论】:

标签: ruby-on-rails-3 http ruby-on-rails-4


【解决方案1】:

您需要设置 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

【讨论】:

  • 工作!,完美但现在我需要一个响应来返回falsetrue取决于超时的响应。喜欢if response = not responding then return false你知道吗?
  • 需要处理超时异常。我已经进行了更改以处理超时情况下的异常。
  • 如果你觉得答案足够满意,请记得把答案打对:)。
  • 只有一个字:太棒了。谢谢人。当然我会把答案标记为正确的。
  • 顺便说一句! Ruby 2 更改了这个参数:ruby-doc.org/stdlib-2.1.0/libdoc/net/http/rdoc/Net/… 我会更新你的回复:D
猜你喜欢
  • 1970-01-01
  • 2020-05-13
  • 2019-02-17
  • 2015-05-22
  • 2016-09-30
  • 1970-01-01
  • 1970-01-01
  • 2017-06-05
  • 2013-07-28
相关资源
最近更新 更多