Как использовать complete_count для отслеживания выполнения группы задач в Celery?

Я пытаюсь использовать «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» — это просто файл с одним словом в каждой строке.

Затем у меня есть работники сельдерея, настроенные для запуска задачи do как:

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

Мой брокер — pyamqp, и я использую rpc для серверной части.

Я думал, что он будет печатать увеличивающееся количество задач для каждого цикла на стороне клиента, но все, что я получаю, это «0».


person Flo    schedule 09.09.2019    source источник


Ответы (1)


Проблема не в методе completed_count. Вы получаете нули, потому что result.ready() остается False после завершения всех задач. Похоже, у нас есть ошибка с серверной частью rpc, есть проблема на github. Попробуйте изменить настройку бэкэнда на amqp, она работает правильно, как я вижу.

person Greenev    schedule 11.09.2019