编程语言
首页 > 编程语言> > python – 让Celery广播所有工作人员的返回结果

python – 让Celery广播所有工作人员的返回结果

作者:互联网

有没有办法在Celery Broadcast任务中获得每个工作人员的所有结果?我想监控所有工人的一切是否正常.还将感谢任务发送到的工作者列表.

解决方法:

不,这不容易.

但是您不必将自己限制在内置的amqp结果后端,
你可以用Kombu(http://kombu.readthedocs.org)发送你自己的结果,
这是Celery使用的消息库:

from celery import Celery
from kombu import Exchange

results_exchange = Exchange('myres', type='fanout')

app = Celery()

@app.task(ignore_result=True)
def something():
    res = do_something()
    with app.producer_or_acquire(block=True) as producer:
        producer.send(
            {'result': res},
            exchange=results_exchange,
            serializer='json',
            declare=[results_exchange],
        )

producer_or_acquire将使用芹菜创建一个新的kombu.Producer
经纪人连接池.

标签:python,celery,celery-task
来源: https://codeday.me/bug/20190825/1722821.html