【发布时间】:2018-09-08 12:13:05
【问题描述】:
所以,我已经使用 celery/beat 很多年了,并且由于 DST 问题等原因一直在手动设置我的任务计划。随着我的代码库变得越来越大,我运行的脚本来更改时代越来越大,我决定解决这个问题。
简而言之,我的系统时钟会自动更新,我可以从我的 shell 运行:
┌─[luke@freebsd] - [~/py3-apps/intranet] - [Thu Mar 29, 12:24]
└─[$]> date
Thu Mar 29 12:37:22 BST 2018
所以目前我有一个任务要在上午 10:30 运行,它将在上午 11:30 运行。所以我认为这很容易,我在配置中添加了以下内容:
CELERY_TIMEZONE = Europe/London
CELERY_ENABLE_UTC = False
当我运行芹菜节拍时间表时,通过:
celery worker --beat -A pyramid_celery.celery_app --ini development.ini -n celeryIntranetAPI
现在我认为这会解决我的问题,但是我的 cron 任务仍然落后一个小时,我怎样才能让 celery 跟上系统时钟?
注意我已经尝试过:
CELERY_TIMEZONE = UTC
CELERY_ENABLE_UTC = True
根据一些建议,但这也不起作用。
任何人都可以阐明如何将我的 celery cron 计时链接到系统时钟吗?
这是在芹菜中修复的:https://github.com/celery/celery/commit/be55de622381816d087993f1c7f9afcf7f44ab33
【问题讨论】:
-
您正在使用
CELERY_我假设您将它导入到芹菜配置文件中?如果不是,您可以使用TIMEZONE,具体取决于您居住的地方,伦敦比欧洲其他地区晚 1 小时。UTC正在自动使用。我认为UTC-1也是一种选择?但我不确定。希望这可以帮助你。另一种选择是在 celery 配置文件中添加app.conf.timezone = 'UTC'。 -
原来我没有发疯,这是一个芹菜问题:github.com/celery/celery/commit/…
-
问题解决了吗?
-
是的,崩溃了,所以刚刚标记,感谢您的帮助。
标签: celery celerybeat