Reset Countdown auf Sellerie Aufgabe

8

Ich muss nach einem Countdown eine Sellerie-Aufgabe ausführen lassen, aber unter bestimmten Bedingungen diesen Countdown zurücksetzen können. Zum Beispiel möchte ich apply_async mit countdown=15 aufrufen, aber wenn ein bestimmtes Ereignis eintritt, bevor die Aufgabe ausgeführt wird, möchte ich diesen Countdown erneut auf 15 Sekunden setzen.

Aus den Dokumenten und dem googlen könnte ich das erreichen, indem ich die Aufgaben-ID speichere und dann die Aufgabe widerrufe und neu erstelle, wenn das Ereignis eintritt. Ich habe mich gefragt, ob es einen eleganteren Ansatz dazu gibt.

    
Facundo Olano 06.03.2012, 23:52
quelle

2 Antworten

1

Anstatt den Countdown einzustellen, können Sie diese Aufgabe nicht einfach widerrufen und eine neue erstellen?

    
seler 25.11.2012 01:47
quelle
0

Verwenden Sie einen Cache wie Redis, um einen Sperrschlüssel zu speichern. Wenn Sie apply_async-Inkrementwert des Schlüssels aufrufen. Wenn Sie diese Aufgabe in Sellerie ausführen, dekrementieren Sie diesen Wert. Wenn der Wert 0 ist, führen Sie die Aufgabe aus. Also, wenn es zwei Aufrufe von apply_async gab, ist Ihr Zähler 2 und die erste Ausführung der Aufgabe wird übersprungen.

Ich denke dieser Code kann Ihnen helfen .

    
FeroxTL 03.04.2015 10:43
quelle

Tags und Links