Сколько запросов мы можем сделать за один раз, используя промежуточное ПО «request» в приложении nodeJS - PullRequest
0 голосов
/ 28 ноября 2018

Я запускаю задание cron каждые 5 минут для получения данных от стороннего API. Это может быть N количество запросов одновременно из приложения NodeJS.Ниже приведены подробные сведения и примеры кода:

1> Запуск задания cron каждые 5 минут:

const cron = require('node-cron');
const request = require('request');
const otherServices= require('./services/otherServices');
cron.schedule("0 */5 * * * *", function () {
  initiateScheduler();
});

2> Получить список элементов, для которых я хочу инициировать запрос.Можно получить N количество элементов.Я вызвал функцию запроса (getSingleElementUpdate()) в цикле forEach

var initiateScheduler = function () {
  //Database call to get elements list
  otherServices.moduleName()
    .then((arrayList) => {
      arrayList.forEach(function (singleElement, index) {
        getSingleElementUpdate(singleElement, 1);
      }, this);
    })
    .catch((err) => {
      console.log(err);
    })
}

3> Начать инициирование запроса для singleElement.Обратите внимание, что мне не нужен обратный вызов, если я получил успешный (200) ответ на запрос.Мне просто нужно обновить записи в моей базе данных в случае успеха.

var getSingleElementUpdate = function (singleElement, count) {
  var bodyReq = {
    "id": singleElement.elem_id
  }
  var options = {
    method: 'POST',
    url: 'http://example.url.com',
    body: bodyReq,
    dataType: 'json',
    json: true,
    crossDomain: true
  };
  request(options, function (error, response, body) {
    if (error) {
      if (count < 3) {
        count = count + 1;
        initiateScheduler(singleElement, count)
      }
    } else{
      //Request Success
      //In this: No callback required
      // Just need to update database entries on successful response
    }
  });
}

Я уже проверил это:

запрос-обещание : Но мне это не нужнообратный звонок после успешного запроса.Итак, я не нашел никакого преимущества в реализации этого в моем коде.Дайте мне знать, если у вас есть положительный момент, чтобы добавить это.

Мне нужна ваша помощь по следующим вопросам:

Я проверил производительность, когда получил 10 элементов в arrayList шага 2. Теперь проблема в том, что у меня нет ясного виденияо том, что произойдет, когда я начну получать 100 и 1000 элементов на шаге 2. Итак, мне нужна ваша помощь в определении того, нужно ли мне обновлять свой код для этого сценария или нет, или что-то упущено, что ухудшает производительность.Также, сколько максимальных запросов я могу сделать за один раз.Любая помощь от вас заметна.

Спасибо!

1 Ответ

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

AFAIK нет жесткого ограничения на количество запросов.Тем не менее, есть (по крайней мере) две вещи, которые следует учитывать: ограничения вашего оборудования (память / процессор) и задержка удаленного сервера (может ли он отвечать на все запросы за 5 минут до следующего пакета).Не зная контекста, также невозможно предсказать, какой механизм масштабирования вам может понадобиться.

Вопрос на самом деле больше в архитектуре приложения, а не в каком-то конкретном фрагменте кода, поэтому вы можете попробовать softwareengineering вместо SO.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...