【问题标题】:Django celery db scheduler not working after version upgrade版本升级后 Django celery db scheduler 不工作
【发布时间】:2014-06-18 12:40:49
【问题描述】:

我正在从以下位置升级 celery 和 django-celery:

celery==2.4.5
django-celery==2.3.3

收件人:

celery==3.0.24
django-celery==3.0.23

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

然后我使用以下命令重新启动 celery worker 和 celery beat:

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

celery beat 初始输出表明它知道任务:

__    -    ... __   -        _
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}>

现在我的定期任务都没有运行:/ 有什么想法吗?

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

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

【问题讨论】:

    标签: celery django-celery


    【解决方案1】:

    它应该在某处的更改日志中,但 Celery 已从以本地时间存储日期更改为以 UTC 存储日期。

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

    类似:

    UPDATE djcelery_periodic_task SET last_run_at=NULL
    

    【讨论】:

    • 非常感谢,我的痛苦时间结束了 :)
    猜你喜欢
    • 1970-01-01
    • 2013-02-17
    • 2019-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-15
    • 1970-01-01
    相关资源
    最近更新 更多