[英]Parallel and Sequential Execution of tasks using Celery
我對 Celery 很陌生,並計划用它來安排一些工作。 其中一種情況如下。
TASK_NM | DEPENDENCY
T1
T2 | T1
T3 | T1
T4
T5 | T3 and T4
從上面的案例來看,
我必須並行執行 T1 和 T4
T1成功完成后,並行執行T2和T3
成功完成T3和T4后,執行T5。
如果任何任務中途失敗,則不執行相關作業。
我們如何使用 Celery 實現這一目標?
提前致謝!!!
是的,但這需要一些工作。 您將不得不使用chain
、 group
和chord
來獲得您想要的行為:
使用chain
依次執行 T1、T2 和 T3:
res = chain(T1.si(), T2.si(), T3.si())
使用group
與 T4 並行執行(1):
res2 = group(res.s(), T4.s())
使用chord
在 T3 和 T4 完成后執行 T5 :
res3 = chord(res2.s(), T5.s())
全部執行
result = res3().get()
文檔很好地解釋了哪些用於串行,哪些用於並行。 要記住的棘手部分是chain
、 chord
和group
所有返回任務本身,因此必須使用()
、 delay()
或apply_async()
調用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.