我一直在为Rails项目使用neography gem,有时我最终遇到以下错误:
<Excon::Error::Socket: end of file reached (EOFError)> #error inspect
有人可以帮我解决此错误吗?另外,我无法根据需要重现此错误。
谢谢
最佳答案
这类错误通常是由您正在与之交互的服务器的连接超时导致的。 Excon尝试在可能的情况下重用连接(因此,该名称指的是EXtended CONnections),通常是首选。不幸的是,它有时会导致这样的问题。
缺乏可重复性听起来也可能与超时有关,特别是服务器有时会因不活动而不是纯时钟时间而超时(在这种情况下,仅在空闲时才发生)。
有几种可能的方法可以解决此问题,尽管它们可能适合于neography gem而不是适合于您的代码(并且它们取决于特定请求的上下文)。
仅当特定请求是幂等时,第一个也是最佳选项才真正可用,并且将对该请求使用:idempotent => true
选项。幂等之所以存在,是因为网络天生就不完美,因此在大多数情况下,允许失败的请求仅自动重试即可。
较不理想但更通用的答案是为每个请求创建一个新的连接。对于任何请求(无论是否同等),它都应该起作用,但是会消耗更多的连接(无论如何对您来说都没有关系),并且性能较差(由于建立连接的开销,尤其是在需要https握手的情况下)。
希望可以帮助您画出更清晰的图片,我个人不熟悉neography,但是我非常熟悉exon,所以我认为这应该很准确。