相关疑难解决方法(0)

Node.js请求模块获得ETIMEDOUT和ESOCKETTIMEDOUT

我正在使用异步模块的组合并行地抓取与请求模块的许多链接. 我注意到很多和错误,虽然链接可以访问并使用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 …

sockets asynchronous request httprequest node.js

42
推荐指数
1
解决办法
4万
查看次数

标签 统计

asynchronous ×1

httprequest ×1

node.js ×1

request ×1

sockets ×1