如果您只使用一个队列或一个任务,这很容易:
从文档:
答:您可以使用celery purge命令清除所有已配置的任务队列:
$ celery -A proj purge
或以编程方式:
>>> from proj.celery import app>>> app.control.purge()1753
如果只想从特定队列中清除消息,则必须使用AMQP API或celery amqp实用程序:
$ celery -A proj amqp queue.purge <queue name>
数字1753是已删除邮件的数量。
您还可以使用
--purge参数启动worker ,以在worker启动时清除消息。
更新: 如果您有多个队列或任务
我不知道在RabbitMQ中编辑它们的任何方法,因为服务器不是以这种方式访问/编辑/删除排队的任务的,但是您始终可以在代码中禁用任务:
@taskdef my_old_task() pass
这样,所有任务将按计划运行,但不会执行任何操作。由于它们既未重命名也未删除,因此不会有任何错误。
显然,您应该更新代码以停止调度这些任务。稍后,将不再计划此类任务,因此您可以删除代码。



