我正在使用异步模块的组合并行地抓取与请求模块的许多链接.
我注意到很多和错误,虽然链接可以访问并使用chrome快速响应.ETIMEDOUTESOCKETTIMEDOUT
我在请求选项中限制maxSockets为2和timeout10000.我使用async.filterLimit()的是2的限制,甚至每次都将并行性降低到2个请求.所以我有2个套接字,2个请求,以及10秒的超时等待来自服务器的标头响应但我得到了这些错误.
这里;我使用的请求配置:
{
...
pool: {
maxSockets: 2
},
timeout: 10000
,
time: true
...
}
Run Code Online (Sandbox Code Playgroud)
这是我用来链接的代码片段:
var self = this;
async.filterLimit(resources, 2, function(resource, callback) {
request({
uri: resource.uri
}, function (error, response, body) {
if (!error && response.statusCode === 200) {
...
} else {
self.emit('error', resource, error);
}
callback(...);
})
}, function(result) {
callback(null, result);
});
Run Code Online (Sandbox Code Playgroud)
我听了错误事件,我看到每当错误代码是ETIMEDOUT连接对象是真/假,所以有时它是连接超时,有时它不是(根据请求文档)
更新:
我决定提升maxSockets至,Infinity …