Я запускаю задание 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. Итак, мне нужна ваша помощь в определении того, нужно ли мне обновлять свой код для этого сценария или нет, или что-то упущено, что ухудшает производительность.Также, сколько максимальных запросов я могу сделать за один раз.Любая помощь от вас заметна.
Спасибо!