2012-08-07 38 views
5

我發現celerybeat在其調度中使用UTC時間(並在英國時間輸出日誌?!),即使我相信我在我的django settings.py中具有所需的設置:celerybeat使用UTC甚至與時區設置

TIME_ZONE = 'UTC' 
USE_TZ = True 
CELERY_ENABLE_UTC = True 
CELERY_TIMEZONE = 'Australia/Sydney' 
CELERYBEAT_SCHEDULE = 
    "testRunBeat" : { 
     "task" : "experiments.tasks.testHeartBeat", 
     "schedule" : crontab(minute = "*/1", hour="13-14"),  
} 

我都試過,沒有運氣

我使用切換TIME_ZONE變量:

django==1.4 
celery==2.5.5 
django-celery==2.5.5 

感謝

回答

1

我認爲你要

CELERY_ENABLE_UTC = False 

celery configuration docs狀態相當清楚,如果該值爲true,日期和時間轉換爲UTC。另請注意,此值從3.0版開始默認啓用。

+0

嗨。該文檔說:「如果啓用日期和時間_in messages_」 - 我不確定究竟是什麼範圍,但它並不一定意味着celerybeat的crontab條目是UTC。以及[這裏](http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html#beat-entries)文檔說:「默認情況下使用當前的本地時區,但您也可以通過啓用CELERY_ENABLE_UTC設置並配置CELERY_TIMEZONE設置來設置特定的時區「,這意味着您需要爲_any_指定的時區啓用UTC。 – Taras 2012-08-11 05:11:39

+0

該文檔可能缺乏或誤導,但我知道這對我有用。我最近從2.4.x升級到3.0.x,並且我的所有crontab條目從本地時間切換到UTC。一旦我設置CELERY_ENABLE_UTC = False,我的所有crontab條目都回到當地時間。 – 2012-08-13 17:12:07

+0

我目前的django安裝程序的時區設置爲UTC,所以我的問題是我無法擺脫UTC(我試圖獲取crontab項目來安排澳大利亞/悉尼時間)。我會仔細看看.. – Taras 2012-08-14 13:24:28