Ruby Net::OpenTimeout:执行已过期

标签 ruby

我的机器上的多个主机上一直出现此错误,例如:

require 'open-uri'
open('https://google.com').read


Net::OpenTimeout: execution expired
    from /usr/local/opt/rbenv/versions/2.4.0/lib/ruby/2.4.0/net/http.rb:904:in `initialize'
    from /usr/local/opt/rbenv/versions/2.4.0/lib/ruby/2.4.0/net/http.rb:904:in `open'
    from /usr/local/opt/rbenv/versions/2.4.0/lib/ruby/2.4.0/net/http.rb:904:in `block in connect'
    from /usr/local/opt/rbenv/versions/2.4.0/lib/ruby/2.4.0/timeout.rb:103:in `timeout'
    from /usr/local/opt/rbenv/versions/2.4.0/lib/ruby/2.4.0/net/http.rb:902:in `connect'
    from /usr/local/opt/rbenv/versions/2.4.0/lib/ruby/2.4.0/net/http.rb:887:in `do_start'
    from /usr/local/opt/rbenv/versions/2.4.0/lib/ruby/2.4.0/net/http.rb:876:in `start'
    from /usr/local/opt/rbenv/versions/2.4.0/lib/ruby/2.4.0/open-uri.rb:323:in `open_http'
    from /usr/local/opt/rbenv/versions/2.4.0/lib/ruby/2.4.0/open-uri.rb:741:in `buffer_open'
    from /usr/local/opt/rbenv/versions/2.4.0/lib/ruby/2.4.0/open-uri.rb:212:in `block in open_loop'
    from /usr/local/opt/rbenv/versions/2.4.0/lib/ruby/2.4.0/open-uri.rb:210:in `catch'
    from /usr/local/opt/rbenv/versions/2.4.0/lib/ruby/2.4.0/open-uri.rb:210:in `open_loop'
    from /usr/local/opt/rbenv/versions/2.4.0/lib/ruby/2.4.0/open-uri.rb:151:in `open_uri'
    from /usr/local/opt/rbenv/versions/2.4.0/lib/ruby/2.4.0/open-uri.rb:721:in `open'
    from /usr/local/opt/rbenv/versions/2.4.0/lib/ruby/2.4.0/open-uri.rb:35:in `open'
    from (irb):3
    from /usr/local/opt/rbenv/versions/2.4.0/bin/irb:11:in `<main>'

不会发生在其他人身上,例如

open('https://twitter.com').read

来自 rbenv 和 macOS 10.12.3 的 Ruby 2.4.0。还使用 Ruby 2.0.0 - macOS 上的系统版本进行了测试。

当我 curl 或使用 Node 的 request 时,我没有收到任何错误,并且得到了预期的结果。所以这不是被阻止的主机,我的 IP 也没有被阻止。

尝试重装Ruby,重启机器,问题依旧。

有什么建议吗?

最佳答案

看起来这是 Ruby 如何解析 DNS 的问题。

添加了 require 'resolv-replace',现在它会立即打开连接。

资料来源: https://stackoverflow.com/a/27485369/116925 https://github.com/ruby/ruby/pull/597#issuecomment-40507119

关于Ruby Net::OpenTimeout:执行已过期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42036133/

相关文章:

ruby-on-rails - 无法在 sidekiq 中添加新队列

ruby - 在简短示例中发出调用方法

javascript - 你能在 Ruby 中使用 Case 语句进行无限计数吗?

ruby - 如何检测 Ruby 对象何时位于比较的右侧?

ruby-on-rails - gem 未加载 : NameError (uninitialized constant) | But gem works in local path

ruby - 哈希到 JSON,然后在 Ruby 中加入另一个 JSON

ruby-on-rails - Rails点击div上传图片

ruby-on-rails - 如何将 Rails 应用程序从 2.3.5 升级到 3.2.x?

ruby - 如何使用 Active Record 查找具有重复数据的记录

ruby - For循环...永远