ruby - 为什么我使用 HTTParty 得到 IO::EAGAINWaitReadable?

标签 ruby linux httparty

Bugsnag 报告说在生产中不时会出现 IO::EAGAINWaitReadable 异常。

IO::EAGAINWaitReadable: Resource temporarily unavailable - read would block

通过 HTTParty 的 HTTP 请求引发异常,最终导致 Ruby 2.1.3 中的 net/protocol.rb:153:in read_nonblock

为什么我得到 IO::EAGAINWaitReadable?为什么有时 HTTP 请求会阻塞?为什么不让他们阻止,这有什么关系?

最佳答案

处理 IO::EAGAINWaitReadable 的最通用方法是:

begin
   result = io.read_nonblock(maxlen)
rescue IO::EAGAINWaitReadable
   IO.select([io])
   retry
end

因此可以在不选择端口的情况下执行此操作,但如示例中所示,选择端口会更好。你也可以看看SO answer关于如何将 WaitReadable 附加到指定的陷阱。

关于ruby - 为什么我使用 HTTParty 得到 IO::EAGAINWaitReadable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26273089/

相关文章:

ruby - Ruby 中的 "and"、 "or"运算符背后有什么智慧吗?

ruby - Ruby 如何使#initialize 私有(private)化?

linux我怎么学呢?管理/用户

ruby-on-rails - 如何正确复制 Webmock stub 的 HTTParty 请求响应的响应正文

ruby - Module.private_constant 有什么作用?有没有办法只列出私有(private)常量?

ruby-on-rails - 我无法将 Rails 应用程序推送到 Heroku/安装 'pg' gem?

linux - 当我使用 VIM 保存文件时会发生什么?

linux - 使用 uuencode,如何在发送时重命名附加的文件?

ruby - rbenv gem安装路径错误-找不到gem

ruby-on-rails - ruby rails : Foursquare remove list item gives 400 value is invalid for item id