如何使用 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
,如我所见,它工作正常
我正在尝试使用 "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
,如我所见,它工作正常