芹菜击败队列包括过时的任务

时间:2013-05-21 12:18:30

标签: python django celery django-celery djcelery

我正在使用Django的定期芹菜任务。我以前在app / tasks.py文件中有以下任务:

@periodic_task(run_every=timedelta(minutes=2))
def stuff():
  ...

但是现在这个任务已经从我的app / tasks.py文件中删除了。但是,我一直在芹菜日志中看到这个任务的召唤:

[2013-05-21 07:08:37,963: ERROR/MainProcess] Received unregistered task of type u'app.tasks.stuff'.

似乎我使用的芹菜节拍调度程序不会更新其队列。这是我的project / settings.py文件中定义调度程序的方式:

CELERYBEAT_SCHEDULER = "djcelery.schedulers.DatabaseScheduler"

重新启动芹菜工人没有帮助。仅供参考,我使用的是Redis经纪人。

如何清除或更新芹菜节拍队列,以便不将旧任务发送给我的芹菜工人?

2 个答案:

答案 0 :(得分:2)

安装django-celery

如上所述,此项目不需要使用芹菜,但您需要这样才能在/admin/djcelery/启用管理界面来管理定期任务。最初不会有任何注册或定期任务。

重新启动节拍并再次检查表格的周期性任务。 Beat会将现有的计划任务添加到该表中,并在设置或装饰器中定义interval或crontab。在那里,您可以删除不需要的任务。

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

答案 1 :(得分:-1)

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

此命令应该有效:

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

How do I remove all .pyc files from a project?