gpt4 book ai didi

ruby - Mechanize 超时

转载 作者:行者123 更新时间:2023-12-04 16:21:08 30 4
gpt4 key购买 nike

我正在尝试构建一段代码来搜索使用 Mechanize 和 Ruby 超时的页面。我的测试台包括一个专门写入超时的页面,以及 3 个正常运行的页面。这是代码:

urls = ['http://example.com/regular.php','http://example.com/regular2.php','http://example.com/regular3.php', 'http://example.com/tmeout.php']
m = Mechanize.new

urls.each do |url|
begin
status = Timeout::timeout(5.0) {
m.get(url)
}
rescue Timeout::Error
puts "TIMED OUT: " + url
end
end

当超时 URL 为 时最后 列表中的元素,这很好用。 timeout链接打印到控制台。然而,当 timeout链接不是列表中的最后一个元素(例如,我将它放在链接的最前面), timeout链接打印到控制台,但有些 regular链接也打印到控制台。这似乎也是不确定的。每次我重新运行它时,都会将一组不同的链接打印到控制台。

谁能告诉我为什么会这样以及有什么可用的修复方法?我注意到实例化了一个新的 mechanize每次迭代都解决了问题 - 但是这是一个不可选项,因为程序的其他部分依赖于来自 m 的 cookie。 ,如果创建新实例,它将被重置。任何修复?

最佳答案

一个快速的谷歌显示了一些想法。一种是尝试重置Mechanize失败后。

rescue Timeout::Error
begin
puts "TIMED OUT: " + url
m = Mechanize.new
end

关于ruby - Mechanize 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58176918/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com