如何查看 rabbitmq 队列中推送的所有 celery 任务

how to see all celery tasks pushed in rabbitmq queue

我在 debian 6 上有一个带有 celery 2.5.5 和 rabbitmq 后端的 django 项目。我在一个队列中有超过 6000 个不同类型的任务。代码中存在一些错误,我需要列出该队列中的所有任务并提取其中一些。我只需要找出 rabbitmq 队列中的所有任务 ID。我找不到如何连接 rabbitmq 队列并列出其内容的方法,最好不要启动管理插件。

像 python 一样很棒:

    import somelib
    conn = somelib.server(credentials, vhost)
    queue = conn.get_queue(queue_name)
    messages = queue.get_messages()

但是列出此类队列的任何其他工具都有帮助。发现了一些使用 npm 安装的工具,但 debian 6 不知道 npm 并且从源代码构建它不是很愉快的方式。

或者以人类可读的形式备份 rabbitmq 队列的东西也很受欢迎。

谢谢你的想法

帕维尔

如果您想要预制界面,您会喜欢 flower。它会在漂亮的 Web 视图中向您显示所有任务。

但是,如果您尝试以编程方式处理每个任务,那么 flower 不是正确的选择,因为它不支持它。然后你将不得不为 python 使用 rabbitmq/AMQP 库,这已经被讨论过,例如这里:Good Python library for AMQP

有了这个,绝对有可能以某种或另一种方式完成您想象的代码,但您必须阅读它,因为我现在对芹菜和花还不错。

您可以使用 celery flower 库来做到这一点。

它将为您提供多种功能,例如显示任务进度和历史记录,在漂亮的仪表板式界面中显示任务详细信息以及图表和统计信息。

下面是一些截图供参考。

任务仪表板:

工人任务:

任务信息: