2016-07-14 17 views
1

Ich arbeite an einem Projekt, bei dem ich fast 500 Anrufe auf einmal von meinem NodeJS-Server zu einem Drittanbieter-Server machen muss. Das Problem ist, dass der Server eines Drittanbieters eine Grenze von maximal 50 Anrufen pro Sekunde hat. Können Sie mir bitte helfen, die Logik zu implementieren, um nur eine bestimmte Anzahl von Anrufen in einer Sekunde zu machen. Die Technologie/Sprache in meinem Projekt ist NodeJS mit HapiJS-Framework.Wie werden asynchrone API-Aufrufe mit Ratenbegrenzung für eine bestimmte Zeitspanne durchgeführt?

Vielen Dank im Voraus.

+0

Also 500 Anrufe aber 50 sollen gehen, was soll mit den restlichen 450 passieren? –

+0

Wenn es 500 Anrufe gibt, sollte es 50 in einer Sekunde senden. Gleiches sollte für die nächsten 9 Sekunden passieren. Ich meine, es sollten Seriengespräche sein. –

Antwort

2

Sie könnten async.js eachlLimit mit gewünschten Verzögerung und gleichzeitige Verbindungen verwenden. Es wäre wie:

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 
}); 
+0

Vielen Dank für diese großartige Lösung. Ich suchte nach der gleichen Lösung. –