8

我在 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"

重新启动芹菜工人没有帮助。仅供参考,我使用 Redis 代理。

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

4

2 回答 2

3

安装django-celery

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

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

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

于 2015-05-28T08:11:10.970 回答
-1

删除最初编写任务的 .pyc 文件。或者,只需删除项目目录中的所有 .pyc 文件。

该命令应该可以工作:

find . -name "*.pyc" -exec rm -rf {} \;

如何从项目中删除所有 .pyc 文件?

于 2013-07-05T12:13:44.210 回答