Как сделать асинхронные вызовы API с ограничением скорости для определенного промежутка времени?
Я работаю над проектом, в котором мне нужно сделать почти 500+ звонков за один раз с моего сервера NodeJS на сторонний сервер. Проблема заключается в том, что сторонний сервер имеет ограничение не более 50 вызовов в секунду. Не могли бы вы помочь мне реализовать логику для выполнения только указанного количества вызовов в одну секунду. Технология / язык, используемый в моем проекте - это NodeJS с фреймворком HapiJS.
Заранее спасибо.
1 ответ
Решение
Вы можете использовать async.js eachlLimit с желаемой задержкой и одновременными подключениями. Это было бы как:
async.eachLimit(['ur11','ur12','ur13' /*and so on*/], 50/* how many simultaneous requests*/, function (url, callback) {
request(url, /*params*/ function(err, result){
//handle err and result
setTimeout(callback, 100 /*you desired delay*/)
})
}, function (err) {
// all requests done
});