windows上的Ruby网络问题

windows上的Ruby网络问题,ruby,Ruby,我使用ruby 1.8.6 patchlevel 111运行windows XP。我正在使用HTTP连接到远程服务器,它一直运行良好。突然,它开始通过下面列出的异常(自从上次成功运行以来,我没有更改任何代码)。有人知道发生了什么事吗 c:/ruby/lib/ruby/1.8/timeout.rb:54:in `rbuf_fill': execution expired (Timeout::E rror) from c:/ruby/lib/ruby/1.8/timeout.rb

我使用ruby 1.8.6 patchlevel 111运行windows XP。我正在使用HTTP连接到远程服务器,它一直运行良好。突然,它开始通过下面列出的异常(自从上次成功运行以来,我没有更改任何代码)。有人知道发生了什么事吗

c:/ruby/lib/ruby/1.8/timeout.rb:54:in `rbuf_fill': execution expired (Timeout::E rror) from c:/ruby/lib/ruby/1.8/timeout.rb:56:in `timeout' from c:/ruby/lib/ruby/1.8/timeout.rb:76:in `timeout' from c:/ruby/lib/ruby/1.8/net/protocol.rb:132:in `rbuf_fill' from c:/ruby/lib/ruby/1.8/net/protocol.rb:116:in `readuntil' from c:/ruby/lib/ruby/1.8/net/protocol.rb:126:in `readline' from c:/ruby/lib/ruby/1.8/net/http.rb:2029:in `read_status_line' from c:/ruby/lib/ruby/1.8/net/http.rb:2018:in `read_new' from c:/ruby/lib/ruby/1.8/net/http.rb:1059:in `request' ... 19 levels... from c:/ruby/lib/ruby/1.8/test/unit/autorunner.rb:216:in `run' from c:/ruby/lib/ruby/1.8/test/unit/autorunner.rb:12:in `run' from c:/ruby/lib/ruby/1.8/test/unit.rb:278 from c:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake/rake_test_loader .rb:5 rake aborted! Command failed with status (3): [c:/ruby/bin/ruby -Ilib;test "c:/ruby/lib/r...] c:/ruby/lib/ruby/1.8/timeout.rb:54:in`rbuf_fill':执行已过期(超时::E) (错误) 来自c:/ruby/lib/ruby/1.8/timeout.rb:56:in'timeout' 从c:/ruby/lib/ruby/1.8/timeout.rb:76:in'timeout' 来自c:/ruby/lib/ruby/1.8/net/protocol.rb:132:in'rbuf_fill' 来自c:/ruby/lib/ruby/1.8/net/protocol.rb:116:in'readuntil' 来自c:/ruby/lib/ruby/1.8/net/protocol.rb:126:in'readline' 从c:/ruby/lib/ruby/1.8/net/http.rb:2029:in'read_status_line' 来自c:/ruby/lib/ruby/1.8/net/http.rb:2018:in'read_new' 来自c:/ruby/lib/ruby/1.8/net/http.rb:1059:in'request' ... 19级。。。 来自c:/ruby/lib/ruby/1.8/test/unit/autorunner.rb:216:in'run' 来自c:/ruby/lib/ruby/1.8/test/unit/autorunner.rb:12:in'run' 来自c:/ruby/lib/ruby/1.8/test/unit.rb:278 来自c:/ruby/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake/rake\u test\u loader .rb:5 雷克流产了! 命令失败,状态为(3):[c:/ruby/bin/ruby-Ilib;测试“c:/ruby/lib/r…”
可能远程主机已关闭?或者在您的计算机和远程主机之间安装了新的防火墙

“Timeout::Error”通常指向这个方向。

除了显而易见的(防火墙,你因为坏的用户代理或忽略robots.txt而被列入黑名单)之外,你可以试试curl

或者增加net/http超时,也就是说,30秒以上


它可能与这个已知的Ruby bug有关,其中Timeout::Error没有将Exception子类化。(我相信在1.9.2中修复了)


可以通过从Timeout::Error(如
rescue Timeout::Error=>e

+1)中救援来修复此错误。唯一出现此错误的时间是网络断开或堵塞,并且需要很长时间才能获得响应。我相信默认超时时间是5秒,这有点低