为什么我用HTTParty获得IO :: EAGAINWaitReadable?

时间:2014-10-09 07:52:49

标签: 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请求会阻塞?为什么不让他们阻止,这是什么交易?

1 个答案:

答案 0 :(得分:0)

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

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

所以可以在没有选择端口的情况下做到这一点,但更好的选择,因为它是在示例中。另外,您可以查看有关如何将WaitReadable另外捕获到指定内容的SO answer