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