Выберите правильный асинхронный метод для пакетной обработки для максимальных запросов / сек.
Мне нужно выполнить циклический вызов некоторого внешнего API с некоторой задержкой, чтобы предотвратить ограничение «User Rate Limit Exceeded».
API геокодирования Google Maps чувствителен к 'req / sec', позволяя 10 req / sec. Я должен сделать геокодирование для сотен моих контактов, и такая задержка необходима. Итак, мне нужно иметь 10 функций асинхронного геокодирования с пост-задержкой в 1 секунду для каждой. Итак, я собираю все контакты в массиве, а затем я перебираю массив в асинхронном режиме.
Как правило, мне нужно иметь N одновременных потоков с задержкой в D msecs в конце каждого потока. Весь цикл перебирает массив пользовательских сущностей. Каждый поток обрабатывает отдельную сущность, как обычно.
Я полагаю, иметь такой код:
const N = 10; # threads count
const D = 1000; # delay after each execution
var processUser = function(user, callback){
someBusinessLogicProc(user, function(err) {
setTimeout(function() {
return callback(err);
}, D);
});
}
var async = require('async') ;
var people = new Array(900);
async.batchMethod(people, processUser, N, finalCallback);
В этом псевдокодеbatchMethod
это метод, который я прошу.