Ich verwende die async Play WS Scala API, um einen RESTful Service abzufragen. Ich frage mich, wie ich eine List
mit Request-URLs verarbeitet werden könnte über WSClient
, aber nicht mehr als eine Anfrage pro Sekunde (der Dienst erlaubt "nur" 1 Anfrage pro Sekunde pro Client). Aus einer logischen Sicht besteht die Idee darin, ein Element (URL) von der Liste zu erhalten, eine Anfrage zu machen und dann eine gewisse Zeit zu warten, bevor mit dem nächsten Element in der Liste fortgefahren wird.Play WS API: Throttling Request Preise
Thread.sleep
in einem nicht blockierenden und asynchronen Rahmen wie Play ist sicherlich eine schlechte Idee.ScheduledThreadPoolExecutor
oder andere Methoden, die neue Threads erzeugen müssen.Wie könnte ich die Anfragerate drosseln, ohne negative Auswirkungen auf die asynchrone und "so wenig Threads wie möglich" Art von Play zu haben?
Was of Play Version:
Im Play 2.4.x und früher, könnten Sie die gleiche
Promise.timeout
mit tun? –Spielversion 2.5.3 – ceran