Ошибка: подключите ETIMEDOUT в TCPConnectWrap.afterConnect [как oncomplete] - PullRequest
0 голосов
/ 16 ноября 2018

Я пытаюсь вызвать REST API асинхронно в цикле for с использованием модуля XMLHttpRequest. Я делаю 400 запросов в 1 цикле, с временем ожидания 1 секунды после каждых 100 запросов. Это прекрасно работает на клиентском JavaScript. Однако, когда я запускаю на NodeJS, используя тот же модуль (он не доступен изначально, мне пришлось загружать с npmjs), я получаю эту ошибку после примерно 230 запросов. Любая идея, если есть другой модуль, который я могу использовать, чтобы лучше обрабатывать эти массовые запросы API?

Ошибка: подключите ETIMEDOUT в TCPConnectWrap.afterConnect [как включено]

1 Ответ

0 голосов
/ 18 ноября 2018

Я наконец-то нашел решение своей проблемы.

При использовании модуля запроса для вызова API REST необходимо указать переменную пула в опциях.Это служит maxsockets, который является декларацией для одновременной обработки запроса.

Ниже приведен пример кода для тех, кто сталкивается с этой проблемой:

Для получения дополнительной информации, проверьте ниже сообщение: Как использовать пулы js запроса (Node js Module)

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);
 }); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...