【发布时间】:2013-05-16 05:03:02
【问题描述】:
我在 Django 中使用定期 celery 任务。我曾经在我的 app/tasks.py 文件中有以下任务:
@periodic_task(run_every=timedelta(minutes=2))
def stuff():
...
但是现在这个任务已经从我的 app/tasks.py 文件中删除了。但是,我一直在我的 celery 日志中看到对此任务的调用:
[2013-05-21 07:08:37,963: ERROR/MainProcess] Received unregistered task of type u'app.tasks.stuff'.
我使用的 celery beat 调度器似乎没有更新它的队列。这是我的 project/settings.py 文件中定义调度程序的方式:
CELERYBEAT_SCHEDULER = "djcelery.schedulers.DatabaseScheduler"
重新启动 celery worker 没有帮助。仅供参考,我使用 Redis 代理。
如何清除或更新 celery beat 队列,以免将旧任务发送给我的 celery worker?
【问题讨论】:
-
我认为您还必须删除时间表的数据库条目。您可以从 django 管理员处执行此操作。
-
嗨,Regis,您是否设法解决了这个问题。我有同样的问题。 @Ngenator - 你的解决方案是
-
问题可能出在redis服务器上。由于 celery 任务是被推送到 redis 服务器的腌制对象,因此 redis 继续持有过时的任务。重启redis服务器,或者调用任务的purge函数。
标签: python django celery django-celery djcelery