机械超时

问题描述 投票:0回答:1

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

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是列表中的last元素时,这可以很好地工作。 timeout链接打印到控制台。但是,如果timeout链接不是列表中的最后一个元素(例如,我将其放在链接的第一位),则timeout链接会打印到控制台,但是某些regular链接也会打印到控制台。这似乎也是不确定的。每次我重新运行它时,都会在控制台上打印一组不同的链接。

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

ruby mechanize
1个回答
0
投票

一个快速的Google展示了一些想法。一种是尝试在失败后重设Mechanize

© www.soinside.com 2019 - 2024. All rights reserved.