如何在Celery中使用completed_count跟踪任务组完成?

时间:2019-09-09 18:35:07

标签: task celery completion

我正在尝试使用“ 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()

'word.txt'只是每行只有一个单词的文件。

然后我将celery worker设置为以以下方式运行do任务:

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

我的经纪人是pyamqp,后端使用rpc。

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

1 个答案:

答案 0 :(得分:0)

问题不在 - ansible-playbook -i deploy/inventories/dev/inventory deploy/playbook.yml --extra-vars "application_version=$PROJECT_VERSION profile_secure=$PROFILE_SECURE" --vault-password-file ~/.vault_pass.pwd 方法中。由于result.0,您将得到零。在完成所有任务后,ready()保持completed_count。似乎我们的False后端存在错误,github上存在问题。考虑将后端设置更改为rpc,据我所知它可以正常工作