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/