我正在使用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);
});