纠正Django for Celery的时间安排

时间:2013-09-26 12:00:06

标签: django celery django-celery django-timezone

我想知道如何在django和芹菜中正确使用时间设置。

这就是我所拥有的:

TIME_ZONE = 'Europe/Oslo'
CELERY_TIMEZONE = 'Europe/Oslo'
CELERY_ENABLE_UTC = True

USE_TZ = True
TZINFO = 'UTC'

但我的Celery任务的时间戳提前了两个小时。我该如何解决?

使用:
Django - 1.6b2
芹菜 - 3.0.23
django-celery - 3.0.23

2 个答案:

答案 0 :(得分:1)

您可以使用TZ默认环境变量。 Django会自动使用它来调用:http://docs.python.org/2/library/time.html#time.tzset 如果你的芹菜从django运行,它也会在那里工作。

你也可以使用类似的东西:

os.environ ['TZ'] ='你的时区'

在本地安装的(manage.py或wsgi.py)开头。

答案 1 :(得分:0)

我想你可能会碰到django-celery中的一个我也遇到过的bug。在django-celery的最后几个版本中存在与时区相关的变化,当我从3.0.19更新到3.0.23时,这个bug首次出现在我身上。

我在#celery IRC聊天中询问了这个问题,并被告知基于django管理员的芹菜任务视图不是那么好,我应该使用Flower(https://github.com/mher/flower)这样的东西来监控我的任务。

我安装并运行了Flower,它没有受到基于django-celery管理员视图所做的相同时间戳问题的影响。