我正在尝试使用XMLHttpRequest模块在for循环中异步调用REST API。我正在1个循环中发出400个请求,每100个请求后有1秒的等待时间。在客户端javascript上运行良好。但是,当我使用相同的模块在NodeJS上运行(它本身不可用,我必须从npmjs下载)时,在大约230个请求后出现此错误。知道是否还有另一个模块可以用来更好地处理大量API请求吗?
错误:连接[连接完成时],在TCPConnectWrap上连接ETIMEDOUT。
答案 0 :(得分:2)
我终于找到了解决问题的方法。
使用请求模块调用REST API时,需要在选项中指定池变量。这用作maxsockets,是用于并发请求处理的声明。
以下代码示例发布给了遇到此问题的人:
有关更多信息,请查看以下帖子: How to use Request js (Node js Module) pools
var separateReqPool = {maxSockets: 20};
var request = require('request');
var url_array = ['url1','url2','url3'];//Array of all the urls to call
async.map(url_array, function(item, callback){
request({url: item, pool: separateReqPool}, function (error, response, body) {
//Do Something with the response
});
}, function(err, results){
console.log(results);
});
}).
catch((err) => {
console.log(err);
});