Promesa programada cola / acelerador
tengo unsolicitud-promesa función que realiza una solicitud a una API. Esta API me limita la velocidad y sigo recibiendo el mensaje de error:
Exceeded 2 calls per second for api client. Reduce request rates to resume uninterrupted service.
Estoy corriendo un par dePromise.each
bucles en paralelo que está causando el problema, si ejecuto solo una instancia dePromise.each
Todo funciona bien. Dentro de estosPromise.each
llamadas conducen a la misma función a con unasolicitud-promesa llamada. Quiero envolver esta función con otraqueue
funcionar y establecer el intervalo en500
milisegundos para que unrequest
no se hace uno después del otro, o en paralelo, sino que se establece en ese momento, en la cola. La cuestión es que todavía necesito estas promesas para obtener su contenido, incluso si lleva bastante tiempo obtener una respuesta.
¿Hay algo que haga esto por mí? ¿Algo en lo que pueda envolver una función y responderá en un intervalo establecido y no en paralelo o disparará funciones una tras otra?
Actualizar: Quizás deba ser específico de la promesa, traté de usar la función del acelerador de subrayado
var debug = require("debug")("throttle")
var _ = require("underscore")
var request = require("request-promise")
function requestSite(){
debug("request started")
function throttleRequest(){
return request({
"url": "https://www.google.com"
}).then(function(response){
debug("request finished")
})
}
return _.throttle(throttleRequest, 100)
}
requestSite()
requestSite()
requestSite()
Y todo lo que volví fue esto:
$ DEBUG=* node throttle.js
throttle request started +0ms
throttle request started +2ms
throttle request started +0ms