错误:在TCPConnectWrap.afterConnect上连接ETIMEDOUT [oncomplete]

时间:2018-11-16 14:31:03

标签: node.js rest api

我正在尝试使用XMLHttpRequest模块在for循环中异步调用REST API。我正在1个循环中发出400个请求,每100个请求后有1秒的等待时间。在客户端javascript上运行良好。但是,当我使用相同的模块在NodeJS上运行(它本身不可用,我必须从npmjs下载)时,在大约230个请求后出现此错误。知道是否还有另一个模块可以用来更好地处理大量API请求吗?

错误:连接[连接完成时],在TCPConnectWrap上连接ETIMEDOUT。

1 个答案:

答案 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);
 });