芹菜:在一个以apply_async开头的组中打印每个任务的状态



我试图打印4个远程任务的状态,从组中的每个异步访问信息。

到目前为止

我遇到的另一个问题是,尽管该组是用apply_async启动的(有效期= 30(,但是只要有一个子任务"待处理",就没有到期了,循环会永远继续下去。

from celery import group
ping_results = group(
    ping_portal.s(),
    ping_factory.s(),
    ping_factory_m.s(),
    ping_proxy.s()
).apply_async(expires=30)
while ping_results.waiting():
    c = ping_results.completed_count()
    print("{0} nodes have responded".format(c))
    for c in ping_results.children:
        print("{0}: {1}".format(c, c.status))

控制台:

3 nodes have responded
33cae071-8944-4a56-9cc1-d0c83bfb0a20: PENDING
97f9a481-8d31-4889-9ea2-6f43d7561443: SUCCESS
8f030dfe-e235-4794-8a84-bf583992528a: SUCCESS
b971a4ac-d23f-4378-b8b6-2c55f3d05618: SUCCESS

作为GroupResultchildren属性只是AsyncResult实例的序列,它应该能够通过结果的name属性获得任务名称,例如。在您的情况下

for c in ping_results.children:
    print("{0}[{1}]: {2}".format(c.name, c, c.status))

相关内容

  • 没有找到相关文章