python - celery 节拍队列包括过时的任务

标签 python django celery django-celery djcelery

我在 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 scheduler 似乎没有更新它的队列。这是在我的 project/settings.py 文件中定义调度程序的方式:

CELERYBEAT_SCHEDULER = "djcelery.schedulers.DatabaseScheduler"

重启 celery worker 没有帮助。仅供引用,我使用 Redis 代理。

如何清除或更新 celery beat 队列,以便不将旧任务发送给我的 celery worker?

最佳答案

安装 django-celery .

如前所述,该项目不需要使用 celery,但您需要它来启用位于 /admin/djcelery/ 的管理界面以管理周期性任务。最初不会有没有注册或周期性的任务。

重启节拍,再次查看表Periodic tasks。 Beat 会使用设置或装饰器中定义的间隔或 crontab 将现有的计划任务添加到该表中。您可以在那里删除不需要的任务。

更新:从celery4开始,推荐使用这个包。 https://github.com/celery/django-celery-beat

关于python - celery 节拍队列包括过时的任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16669838/

相关文章:

python - 如何在自定义模板标签中传递 url 标签?

python - 将文件行读入 xargs 以实现并行 python 脚本

Django,从模型方法中过滤记录?

css - Django Rest Framework render_form 和必填字段

subprocess - Celery 任务子进程 stdout 记录

python - 如何限制在 celery 中运行的任务数量

python - 运行 celery 任务时如何取消确认消息?

python - 向 DNS 查询时欺骗 src ip 地址

python - 删除包含字符串的行上方和下方的行数

python - 防止为特定的 save() 调用发送信号