Wie queue, http-get-Anforderungen in Nodejs, um die Kontrolle über Ihre rate?
Habe ich eine NodeJS-app sendet die HTTP get-Anforderungen, die von verschiedenen stellen im code, einige sind sogar abhängig (senden einer Anfrage auf eine Antwort wartet, Verarbeitung und stützt sich auf die Ergebnisse senden einer anderen Anfrage).
Ich muss begrenzt die rate, mit der Anfragen (z.B. 10 Anfragen pro Stunde).
Dachte ich über das queuing der Anfragen und dann an einem zentralen Punkt das freigeben Sie, in einer kontrollierten Art und Weise, aber steckengeblieben, wie die Warteschlange der callback-Funktionen und den davon abhängigen Parameter.
Würde gerne Vorschläge hören, wie Sie rüber kommen, das Szenario mit mindestens Umstrukturierung für die app.
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, dass beantwortet deine Frage bereits. Eine zentrale queue drosseln Ihre Anfragen ist der Weg zu gehen. Das einzige problem hier ist, dass die Warteschlange zu haben, die volle Informationen für die Anfrage und die callback(s) verwendet werden soll. Ich würde Abstrakt das in einem
QueueableRequest
Objekt, das könnte in etwa so Aussehen:Dies ist natürlich nur Beispiel-code, der könnte viel schöner, aber ich hoffe, Sie bekommen das Bild.
Den Async Modul hat eine Reihe von flow control Optionen, die Ihnen helfen könnte.
queue
klingt wie eine gute Passform, wo begrenzen Sie die Parallelität.Ich würde Deferreds und zurück-eine für jede Anfrage in der Warteschlange. Sie können dann fügen Sie gelingen/scheitern Rückrufe auf das latente Versprechen, nachdem er in die Warteschlange eingereiht wurde.
Können Sie halten eine
[ url, deferred ]
Paare in der Warteschlange, und jedes mal, wenn Sie entfernen eine URL, die Sie haben auch die Latenten, die mit ihm geht, die Sie beheben können, oder scheitern Sie nach der Bearbeitung der Anfrage.