【问题标题】:Why do I get IO::EAGAINWaitReadable with HTTParty?为什么我会通过 HTTParty 获得 IO::EAGAINWaitReadable?
【发布时间】:2014-10-09 07:52:49
【问题描述】:

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 请求会阻塞?为什么不让他们阻止,有什么关系?

【问题讨论】:

标签: ruby linux httparty


【解决方案1】:

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

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

因此可以在不选择端口的情况下执行此操作,但最好使用示例中所示的选择。您还可以查看SO answer,了解如何将WaitReadable 附加到指定位置。

【讨论】:

    猜你喜欢
    • 2017-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-09
    • 2019-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多