Wie kann ich das verzögern der Ausführung von Sellerie Aufgaben?
Habe ich ein kleines Skript, dass die Warteschlange einreiht, Aufgaben zur Bearbeitung. Dieses Skript macht eine ganze Menge Datenbank Abfragen, um die Elemente zu erhalten, sollte in die Warteschlange eingereiht. Das Problem, das ich bin vor ist, dass der Sellerie Arbeiter beginnen Kommissionierung bis die Aufgaben, sobald Sie in die Warteschlange eingereiht, die durch das Skript. Das ist richtig und es ist der Weg, Sellerie funktionieren soll, aber dies führt oft zu deadlocks zwischen meinem Skript und den Sellerie Arbeitnehmer.
Gibt es eine Möglichkeit, ich könnte enqueue alle meine Aufgaben aus dem Skript, aber die Verzögerung der Ausführung bis das Skript abgeschlossen ist oder bis eine festgelegte Zeit verzögern?
Konnte ich nicht finden diese in der Dokumentation von Sellerie oder django-celery. Ist das möglich?
Derzeit als quick-fix habe ich daran gedacht, indem alle Elemente verarbeitet werden, in eine Liste und, wenn mein script fertig ist die Ausführung aller Abfragen, ich kann einfach die Liste Durchlaufen und enqueue-Aufgaben. Vielleicht würde dies das Problem beheben, aber wenn Sie haben Tausende von items einreihen, dies könnte eine schlechte Idee.
InformationsquelleAutor Mridang Agarwalla | 2012-10-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
eta/countdown-Optionen aktivieren, um die Verzögerung der Ausführung der Aufgabe:
http://docs.celeryproject.org/en/master/userguide/calling.html#eta-and-countdown
InformationsquelleAutor
Ich denke, Sie versuchen zu vermeiden, race-Bedingung, Ihre eigenen Skripts, nicht zu Fragen nach einer Methode zu verzögern, eine Aufgabe auszuführen.
Dann können Sie einen task erstellen, und in dieser Aufgabe, rufen Sie jeweils Ihre Aufgabe mit .Anwendung (die), nicht .apply_async() oder .delay(). So, dass diese Aufgaben sequenziell ausgeführt
InformationsquelleAutor