Как сделать асинхронные вызовы 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
});
Другие вопросы по тегам