我使用Request模块来获取html页面,但效果很好,但在一段时间后,我在某些请求上遇到错误ENOTFOUND
和EADDRINFO
。在网上浏览后,我发现了一些类似的问题(#699,#5488,#697),我从中理解的是,我可能不会消耗一些(或全部?)响应和在某些时候应用程序达到套接字池最大大小。
我对这一切并不十分确定,但我正在考虑增加globalAgent.maxSockets
(至100?)并始终通过在{}开始时调用response.resume()
来消费响应请求回调。这有什么意义吗?还是我离开赛道?
我已经查看了Node的代码,试图了解resume()
做了什么,但我不确定我找到了正确的功能(#L698)。
感谢您的帮助。
答案 0 :(得分:0)
Per kanaka的建议我用我发现的解决方案回答了我自己的问题:
我做了我说的我会尝试,这解决了问题(虽然不确定为什么)。因此,在初始化服务器之前,我设置http.globalAgent.maxSockets = 100
和https.globalAgent.maxSockets = 100
,每次我使用请求模块时,我都会在回调中添加它:if (response) { response.resume(); }
也许这会帮助别人:)