我可以单独查看和删除 Celery / RabbitMQ 任务吗?

Posted

技术标签:

【中文标题】我可以单独查看和删除 Celery / RabbitMQ 任务吗?【英文标题】:Can I review and delete Celery / RabbitMQ tasks individually? 【发布时间】:2018-02-05 15:06:54 【问题描述】:

我正在运行 Django + Celery + RabbitMQ。在修改了一些任务名称后,我开始收到“未注册的任务”KeyErrors,即使在使用此键从 Django Celery Beat 的定期任务表中删除任务并重新启动 Celery 工作者之后也是如此。

原来是Celery / RabbitMQ tasks are persistent。我最终通过reimplementing the legacy tasks as dummy methods解决了这个问题。

将来,我不希望清除队列、重新启动工作程序或重新实现旧方法。相反,我想检查队列并单独删除任何遗留任务。这可能吗? (最好在 Django 管理界面的上下文中。)

【问题讨论】:

相关但不涉及删除任务***.com/questions/13049829/… 参考docs.celeryproject.org/en/latest/userguide/monitoring.html 花插件有助于检查 【参考方案1】:

Celery inspect 可能会有所帮助

查看活动队列:

celery -A proj inspect active_queues

终止进程:

celery -A proj control invoke process_id

查看所有可用的检查选项:

celery inspect --help

【讨论】:

以上是关于我可以单独查看和删除 Celery / RabbitMQ 任务吗?的主要内容,如果未能解决你的问题,请参考以下文章

重试丢失或失败的任务(Celery、Django 和 RabbitMQ)

如何查看Celery存储在redis里面的结果

如何在 Django 中运行和查看 celery 任务?

如何使用 redis 代理从 celery 中删除任务?

Celery / Django - 如何以编程方式查看工人的状态

定时任务、Celery、消息队列