我正在运行Django + Celery + RabbitMQ。修改一些任务名称后,我开始收到"未注册的任务"KeyErrors,即使在从 Django Celery Beat 的周期性任务表中删除使用此键的任务并重新启动 Celery worker 之后也是如此。
事实证明,Celery/RabbitMQ任务是持久的。我最终通过将遗留任务重新实现为虚拟方法解决了这个问题。
将来,我宁愿不清除队列,重新启动工作线程或重新实现旧方法。相反,我想检查队列并单独删除任何旧任务。这可能吗?(最好是在 Django 管理界面的上下文中。
芹菜inspect
可能会有所帮助
查看活动队列:
celery -A proj inspect active_queues
要终止进程:
celery -A proj control invoke process_id
要查看所有可用的检查选项,请执行以下操作:
celery inspect --help