python - 调用 celery add_consumer 后 worker 不消费任务

标签 python rabbitmq queue celery celery-task

我想利用 Celery(使用 RabbitMQ 作为后端 MQ)通过不同的队列执行不同风格的任务。一个要求是来自特定队列的(由工作人员)消费应该具有暂停和恢复的能力。

celery ,好像有this capability通过调用 add_consumercancel_consumer。虽然我能够取消特定工作人员队列中任务的消费,但我无法通过调用 add_consumer 让工作人员恢复消费。 The code to reproduce this issue is provided here .我的猜测可能是我缺少某种在 celeryconfig 中或在启动 worker 时通过参数提供的参数?

如果能对此有一些新的看法,那就太好了。关于 add_consumer 的 Stackoverflow 和 Github 中都没有太多讨论。所以我希望这里有一些专家愿意分享他们的想法/经验。

--

我正在运行以下程序:

Windows 操作系统、RabbitMQ 3.5.6、Erlang 18.1、Python 3.3.5、celery 3.1.15

最佳答案

要从队列中恢复,您需要指定队列名称以及目标工作人员。这是如何做的。

app.control.add_consumer(queue='high', destination=['celery@asus'])

这里是add_consumer签名

def add_consumer(state, queue, exchange=None, exchange_type=None,
             routing_key=None, **options):

在你的例子中,你正在调用

app.control.add_consumer('high', destination=['celery@high1woka'])

因此 high 被传递到状态并且队列为空。所以它无法恢复。

关于python - 调用 celery add_consumer 后 worker 不消费任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45784824/

相关文章:

Python Pip 安装失败 - 无法构建 Egg。由于 google cloud sql 也无法使用 1.2.5

python - 如何访问对列表中对的每个元素?

c# - RabbitMQ 传输速率加快?

c# - 线程被中止 - C# 使用队列

python - 如何使用 OpenCV 检测图像帧中的对象?

python - 在 Django 中间件中设置 cookie

ssl - 如何在使用rabbitmq结合mqtt和认证后端进行ssl客户端认证后实现主题认证?

queue - 队列发送者如何知道消费者崩溃了?

python - 层序遍历-树

java - 当前队列负载如何调用Elastic Search?