1

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

这是我所拥有的:

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

4

2 回答 2

1

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

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

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

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

于 2013-10-01T07:40:06.173 回答
0

我认为您可能在 django-celery 中遇到了我也遇到的错误。在 django-celery 的最后几个版本中有与时区相关的更改,当我从 3.0.19 更新到 3.0.23 时,这个错误首先出现在我面前。

我在#celery IRC 聊天中询问了这个问题,并被告知基于 django admin 的 celery 任务视图不是很好,我应该使用 Flower(https://github.com/mher/flower)之类的东西来监控我的任务.

我安装并运行了 Flower,它没有遇到与基于 django-celery 管理的视图相同的时间戳问题。

于 2013-09-30T15:48:24.000 回答