GAE Aufgabenwarteschlangen, wie die Verzögerung zu machen?
-
19-09-2019 - |
Frage
Im Task-Warteschlangen-Code wird ausgeführt, um die Server-Seite zu verbinden URL abrufen. Meine Datei queue.yaml.
queue:
- Name: default
rate: 10 / m
bucket_size: 1
In einem solchen Einstellungen durchgeführt Tusk auf einmal alle gleichzeitig. Die Spezifität ist, dass zwischen den Anfragen sollte zumindest verzögert werden 5 s . Aufgabe muss mit einer Differenz> 5 Sekunden auf der Bühne. (aber ist nicht parallel).
Was sind die Werte in queue.yaml werden?
Lösung
Sie können keine Mindest Verzögerungen zwischen den Aufgaben in queue.yaml
angeben, zur Zeit; Sie sollten es (teilweise) in Ihrem eigenen Code tun. Zum Beispiel, wenn Sie einen Eimer Größe von 1 angeben (so dass mehr als eine Aufgabe soll nie auf einmal ausgeführt werden sein), und stellen Sie sicher, die Aufgaben laufen für mindestens 5 Sekunden (erhält eine start=time.time()
am Anfang, time.sleep(time.time()-(5+start))
am Ende) dieses sollte arbeiten. Wenn es nicht der Fall ist, haben jede Aufgabe Datensatz im Speicher der Zeitstempel es fertig, und wenn es Prüfung starten, wenn die letzte Aufgabe beendet weniger als 5 Sekunden vor, und in diesem Fall sofort beenden.
Andere Tipps
Der andere Weg, um die Auftragsdaten in der Tabelle gespeichert sein könnte. In Ihrer Aufgabe-Warteschlange ein id-Parameter hinzuzufügen. Fetch erste Aufgabe aus der Tabelle und gibt ihre ID-Task-Queue-Verarbeitung Servlet. In Servlet am Ende Verzögerung für 5 Sekunden und Feth nächste Aufgabe, übergibt ihre ID und .... so weiter.