我有不同的 celery 队列,在某个时候我希望工作人员停止从我的队列中消费
celery_app.control.cancel_consumer(consumer_queue)
一段时间后我希望能够恢复消费者,我用下一个命令来做到这一点
celery.control.add_consumer(
consumer_queue,
routing_key=consumer_queue,
destination=['worker-name'],
)
此时我预计 worker-name
将从 consumer_queue
获取任务,我的自定义路由器通过 routing_key
重定向。但是我从 celery 检查中得到了这个输出
celery.control.inspect().active_queues()
{'celery@worker-name': []}
一些细节
celery :celery==3.1.23
海带:kombu==3.0.35
台球:billiard==3.3.0.23
注意:即使命令相同,也可以通过 celery flower (flower==0.8.4
) 添加消费者。
我做错了什么以及如何以正确的方式重新启用消费?
最佳答案
好吧,这是一个简单的解决方案为时过早的问题:我为工作人员提供了错误的名称,而不是设置 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'}}]
关于python - celery 恢复从队列中消费,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44030720/