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

Pum*_*Pie 5 api rest node.js

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

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

Pum*_*Pie 7

我终于找到了解决我的问题的方法。

使用请求模块调用 REST API 时,需要在选项中指定池变量。这用作 maxsockets,这是并发请求处理的声明。

下面为那些遇到此问题的人发布了示例代码:

有关更多信息,请查看以下帖子: 如何使用请求 js(节点 js 模块)池

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);
 }); 
Run Code Online (Sandbox Code Playgroud)