我正在尝试使用"completed_count(("来跟踪 Celery 中一个组中还剩下多少任务。
我的"客户端"运行这个:
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()
"单词.txt"只是一个文件,每行都有一个单词。
然后,我将芹菜工人设置为按以下方式运行执行任务:
@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
,如我所见,它工作正常