3

有没有办法从芹菜广播任务的每个工人那里获得所有结果?我想监控所有工人是否一切正常。将任务发送到的工人列表也将不胜感激。

4

1 回答 1

7

不,这不容易。

但是您不必将自己限制在内置的 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_acquirekombu.Producer将使用 celery 代理连接池创建一个新的。

于 2013-04-02T14:33:13.780 回答