Я ищу несколько советов относительно наилучшего способа сопоставить список, сгенерированный из задачи, другой задачей в сельдере.Лучший способ сопоставления сгенерированного списка с заданием в сельдерее
Предположим, у меня есть задача под названием 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
).
Я ищу наиболее оптимальный способ сделать это в сельдерее. Буду признателен за любые советы.
Спасибо!
На самом деле, так я и сделал это и до сих пор пользуюсь этим способом. Никогда не поздно дать хороший ответ, который, надеюсь, поможет другим. Спасибо. – chaimp
Cheers @chaimp, я просто наткнулся на него, ища ответ на другой вопрос, и мне пришлось решить эту проблему совсем недавно;) – theheadofabroom