如何使用 completed_count 来跟踪 Celery 中的任务组完成情况?

How to use completed_count to track task group completion in Celery?

我正在尝试使用 "completed_count()" 来跟踪 Celery 中一个组中剩余的任务数。

我的"client"运行是这样的:

from celery import group
from proj import do

wordList=[]
with open('word.txt') as wordData:
     for line in wordData:
         wordList.append(line)

readAll = group(do.s(i) for i in wordList)

result = readAll.apply_async()
while not result.ready():
     print(result.completed_count())
result.get()

“word.txt”只是一个文件,每行一个单词。

然后我将 celery worker(s) 设置为 运行 do task as:

@app.task(task_acks_late = True)
def do(word):
    sleep(1)
    return f"I'm doing {word}"

我的代理是 pyamqp,我使用 rpc 作为后端。

我认为它会在客户端为每个循环打印越来越多的任务,但我得到的只是“0”。

问题不在completed_count方法中。你得到零是因为 result.ready() 在所有任务完成后保持 False。似乎我们在 rpc 后端有一个错误,在 github 上有一个问题。考虑将后端设置更改为 amqp,如我所见,它工作正常