Elija el método asíncrono adecuado para el procesamiento por lotes para solicitudes máximas / seg.
Necesito realizar una llamada cíclica a alguna API externa con algún retraso, para evitar la restricción 'Límite de velocidad de usuario excedido'.
La API de geocodificación de Google Maps es sensible a 'req / sec', lo que permite 10 req / sec. Debo hacer geocodificación para cientos de mis contactos, y se requiere dicho retraso. Entonces, necesito tener 10 funciones de geocodificación asíncrona con post-delay en 1 segundo para cada una. Entonces, recopilo todos los contactos en la matriz, y luego recorro la matriz de manera asíncrona.
En general, necesito tener N subprocesos simultáneos, con un retraso en D ms en el final de cada subproceso. Todo el ciclo itera sobre una matriz de entidades de usuario. Cada hilo procesa una sola entidad, como de costumbre.
Supongo que tiene un código como:
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);
En este pseudocódigobatchMethod
Es un método que estoy pidiendo.