2014-07-07 17 views
5

Ich benutze Sellerie 2.5.1 und ich versuche countdown zu verwenden, um die Aufgabe nach 20 Sekunden auszuführen, aber es wird sofort ausgeführt.Sellerie Aufgabe mit Countdown

Ich benutze es als:

DemoTask.apply_async(countdown = 20) 

Bin ich hier etwas fehlt?

+0

Haben Sie zufällig 'CELERY_ALWAYS_EAGER = True'? – Banana

+0

Nein, bin ich nicht. Ich habe auch versucht, 'CELERY_ALWAYS_EAGER = False' zu ​​setzen. – Siddharth

+0

@Siddharth Countdown funktioniert nicht mit' CELERY_ALWAYS_EAGER = True'? Sie würden intuitiv das gleiche Verhalten erwarten, ob synchron oder asynchron, aber es scheint, als würde der Countdown ignoriert:/Ich kann keine Dokumentation finden, die das angibt und das Lesen des Codes scheint nicht offensichtlich. –

Antwort

5

Das Problem liegt wahrscheinlich nicht in der richtigen Zeitzone wie in Indien. Wenn Sie countdown=20 einstellen, könnten Sie Sellery sagen, dass Sie die Aufgabe 20 Sekunden nach 3 Stunden ausführen sollen.

Ich schlage vor, die pytz library mit Sellerie zu sagen, die Aufgabe zur richtigen Zeit zu starten:

from datetime import datetime, timedelta 
from pytz import timezone 

# Set timezone: http://en.wikipedia.org/wiki/List_of_tz_zones_by_name 
my_tz = timezone('US/Eastern') 

DemoTask.apply_async(eta=my_tz.localize(datetime.now()) + timedelta(seconds=20)) 

Oder noch einfacher, wenn Sie Django verwenden (und eingestellt haben TIME_ZONE in settings.py):

+0

Hatte ein ähnliches Problem. Die Sommersparzeit endete und unsere Countdowns wurden plötzlich ignoriert ... – tschale

Verwandte Themen