Лучший способ сопоставить сгенерированный список с задачей в сельдерее

Я ищу несколько советов о том, как лучше сопоставить список, созданный из задачи, с другой задачей в сельдерее.

Позволять'скажем, у меня есть задача под названиемparse, который анализирует документ PDF и выводит список страниц. Затем каждая страница должна быть отдельно передана другой задачеfeed, Это все должно идти внутри задачи под названиемprocess

Итак, один из способов сделать это:

@celery.task
def process:
    pages = parse.s(path_to_pdf).get()

    feed.map(pages)

Конечно, это не очень хорошая идея, потому что я звонюget() внутри задачи.

Кроме того, это неэффективно, так как мойparse Задача обернута вокруг функции генератора и может выдавать страницы, что означает, чтодолжна быть возможность поставить в очередь первую страницу для подачи до того, как парсер выдаст последнюю страницу.

Другая возможность состоит в том, чтобы сделать это:

@celery.task
def process:
    for page in parse.s(path_to_pdf).get():
        feed.delay(page)

Этот пример все еще включает вызовget() хотя внутри задачи. Кроме того, этот пример является упрощенным, и мне действительно нужно сделать некоторые вещи после того, как все страницы были загружены (т.е. вchord).

Я ищу наиболее оптимальный способ сделать это в сельдерее. Буду признателен за любые советы.

Спасибо!

Ответы на вопрос(1)

Ваш ответ на вопрос