python - celery 恢复从队列中消费

标签 python python-2.7 redis celery worker

我有不同的 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/

相关文章:

python - 使selenium单击具有相同类别的连续元素n次

rest - Rest api中的redis key 更新通知

sql-server - SQL Server 2014 内存中 OLTP 与 Redis

python - 我如何结合 SQLAlchemy 和 EAV DB 模式的优势?

python - 如何使用 tweepy 获取推文的个人资料图片

python - Python 中的反射 : how to view all parameters of a function in Python 2. 7

python - 这个 dict to list 转换的 pythonic 方法是什么?

redis - 如何使用 StackExchange.Redis 设置带 TTL 的字符串

python - 使用包含列表 Python 的字典过滤 DataFrame 的 2 列

python - 在 tensorflow 中使用一维 CNN 对可变长度的时间序列进行分类