错误:getaddrinfo ENOTFOUND Node.js请求 - 承诺

时间:2016-06-30 06:00:06

标签: javascript node.js request promise getaddrinfo

我正在使用Node.js中的request-promise模块生成大量并行请求(> 1000),并且在大约一半(500)完成后我收到以下错误:

Error: getaddrinfo ENOTFOUND

我看到了这个github问题:https://github.com/nodejs/node-v0.x-archive/issues/5545这似乎是我的问题,但他们从来没有想出一个令人满意的解决方案。此外,这适用于节点版本v0.x,而这在版本5.7.0中发生。

为了清楚起见,我的要求大致如下:

var urls = [];
for(var i=0; i<1000; i++) {
    //create url
    urls.push(url);
}
return Promise.all(urls.map(createAPIRequestPromise));

其中createAPIRequestPromise本质上是:

var rp = require('request-promise');
function createAPIRequestPromise(url) {
    var options = {
        headers: {
            'APIKey': apiKey
        },
        json: true,
        url: url
    };
    return rp(options);
}

编辑:

使用承诺: 如果我们让第一个代码块成为一个名为firerequests的函数,那么它看起来像是:

firerequests().then(function(bodies){
    bodies.forEach(function(body){
        console.log(body.valueX);
    });
}).catch(function(err){
    console.log(err);
});

0 个答案:

没有答案