2014-07-07 48 views
5

我正在使用芹菜2.5.1,我試圖用countdown在20秒後運行任務,但它立即執行。倒計時的芹菜任務

我使用它作爲:

DemoTask.apply_async(countdown = 20) 

我在這裏失去了一些東西?

+0

你有沒有機會擁有'CELERY_ALWAYS_EAGER = True'? – Banana

+0

不,我不是。我也嘗試設置'CELERY_ALWAYS_EAGER = False' – Siddharth

+0

@Siddharth倒計時不適用於'CELERY_ALWAYS_EAGER = True'嗎?你會直覺地期望相同的行爲,無論是同步還是異步運行,但似乎倒計時被忽略:/我找不到任何文檔說明這一點,閱讀代碼似乎並不明顯。 –

回答

5

這個問題很可能不像您在印度那樣處於正確的時區。通過設置countdown=20,您可能會告訴Celery在3小時前20秒後執行任務。

我建議使用pytz library告訴芹菜在合適的時間啓動任務:

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)) 

甚至更​​容易,如果你使用Django的(並且已經在settings.py設置TIME_ZONE):

+0

有類似的問題。夏季儲蓄時間結束,突然我們的倒計時被忽略... – tschale