芹菜从队列

时间:2017-05-17 16:51:33

标签: python python-2.7 redis celery worker

我有不同的芹菜队列,在某个时刻我希望工人停止从我的队列消费

celery_app.control.cancel_consumer(consumer_queue)

有一段时间,我希望能够恢复消费者,并使用下一个命令

celery.control.add_consumer(
    consumer_queue,
    routing_key=consumer_queue,
    destination=['worker-name'],
)

此时我希望worker-name将从我的自定义路由器重定向consumer_queue的{​​{1}}中获取任务。但相反,我从芹菜检查中得到了这个输出

routing_key

celery.control.inspect().active_queues()

一些细节 芹菜:{'celery@worker-name': []} Kombu:celery==3.1.23 台球:kombu==3.0.35

注意:通过芹菜花(billiard==3.3.0.23)添加消费者即使命令相同也可以。

我做错了什么以及如何以适当的方式重新消费?

1 个答案:

答案 0 :(得分:1)

好的,这是一个过早的问题,有一个简单的解决方案:我为工作人员提供了错误的名称,而不是设置worker-name我应该提供celery@worker-name标识符。 出于调试目的,它对设置reply=True参数

也很有用
response = celery.control.add_consumer(
    consumer_queue,
    routing_key=consumer_queue,
    destination=['celery@{}'.format(consumer)],
    reply=True,
)
print(response)

您将看到操作是否成功 [{u'celery@worker-name': {u'ok': u'add consumer consumer-queue'}}]