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

celery ,似乎通过调用add_consumercancel_consumer而具有this capability。虽然我可以从特定工作人员的队列中取消任务的使用,但是我无法通过调用add_consumer来使工作人员恢复使用。 The code to reproduce this issue is provided here。我的猜测很可能是我在启动工作程序时缺少通过celeryconfig或通过参数提供的某种参数吗?

希望对此有一些新的了解。关于Stackoverflow,关于add_consumer或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/

10-10 18:21
查看更多