如何在没有响应的网站上等待Mechanize?

我注意到当我获取一个没有使用Mechanize响应的网站时,它只是在等待。

我怎样才能克服这个问题?

有几种方法可以解决它。

Open-Uri和Net :: HTTP都有传递超时值的方法,然后告诉底层网络堆栈你愿意等多久。 例如,Mechanize允许您在初始化实例时获取其设置,例如:

mech = Mechanize.new { |agent| agent.open_timeout = 5 agent.read_timeout = 5 } 

这些都在new文档中,但您必须查看源代码以查看可以获得的实例变量。

或者你可以使用Ruby的timeout模块:

 require 'timeout' status = Timeout::timeout(5) { # Something that should be interrupted if it takes too much time... } 

http://mechanize.rubyforge.org/mechanize/Mechanize.html在这个页面上有2个未记录的属性open_timeoutopen_timeout ,尝试使用它们。

 agent = Mechanize.new { |a| a.log = Logger.new("mech.log") } agent.keep_alive=false agent.open_timeout=15 agent.read_timeout=15 

HTH