Django芹菜db调度程序在版本升级后无法正常工作

时间:2014-06-18 12:40:50

标签: celery django-celery

我正在升级芹菜和django-芹菜:

celery==2.4.5
django-celery==2.3.3

要:

celery==3.0.24
django-celery==3.0.23

点数升级后我运行迁移,一切都很好。

然后我用以下命令重新启动芹菜工人和芹菜:

django-admin.py celery worker --loglevel=DEBUG --config=portal.settings.development -E
django-admin.py celery beat --loglevel=DEBUG --config=portal.settings.development

芹菜击败初始输出显示它知道任务:

__    -    ... __   -        _
Configuration ->
    . broker -> amqp://zonza:**@localhost:5672/zonza
    . loader -> djcelery.loaders.DjangoLoader
    . scheduler -> djcelery.schedulers.DatabaseScheduler

    . logfile -> [stderr]@%DEBUG
    . maxinterval -> now (0s)
[INFO] Wed, 18 Jun 2014 13:31:18 +0000 celery.beat 2184 140177823078144 beat: Starting...
[2014-06-18 13:31:18,332: DEBUG/MainProcess] DatabaseScheduler: intial read
[2014-06-18 13:31:18,332: INFO/MainProcess] Writing entries...
[2014-06-18 13:31:18,333: DEBUG/MainProcess] DatabaseScheduler: Fetching database schedule
[2014-06-18 13:31:18,366: DEBUG/MainProcess] Current schedule:
<ModelEntry: SOON_EXPIRY_ALERT SOON_EXPIRY_ALERT(*[], **{}) {4}>
<ModelEntry: celery.backend_cleanup celery.backend_cleanup(*[], **{}) {4}>
<ModelEntry: REFRESH_DB_CACHE REFRESH_DB_CACHE(*[], **{}) {4}>

现在我的周期性任务都没有运行:/任何想法?

编辑:如果我将调度程序设置更改为默认的'celery.beat.PersistentScheduler',则任务将起作用。但我认为我们需要在这个项目中使用djcelery,原因有很多

edit2 :大约40分钟后,任务现在开始正常运行,这显然不理想,我不明白为什么

1 个答案:

答案 0 :(得分:2)

它应该在某个地方的更改日志中,但是Celery从当地时间的存储日期变为以UTC格式存储它们。

数据库调度程序无法自动转换为新格式,因此您需要为每个定期任务重置last_run_at字段。

类似的东西:

UPDATE djcelery_periodic_task SET last_run_at=NULL