1
我正在尋找一些建議,以將從任務生成的列表映射到芹菜中的另一個任務的最佳方式。將生成的列表映射到芹菜中的任務的最佳方法
比方說,我有一個任務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 2015-10-13 18:53:52
乾杯@chaimp,我剛剛遇到它,同時尋找一個不同的問題的答案,最近我只能自己解決這個問題;) – theheadofabroom 2015-11-04 10:13:47