簡體   English   中英

使用 Celery 並行和順序執行任務

[英]Parallel and Sequential Execution of tasks using Celery

我對 Celery 很陌生,並計划用它來安排一些工作。 其中一種情況如下。

TASK_NM | DEPENDENCY

T1

T2      |        T1

T3      |        T1 

T4

T5      |        T3 and T4

從上面的案例來看,

  1. 我必須並行執行 T1 和 T4

  2. T1成功完成后,並行執行T2和T3

  3. 成功完成T3和T4后,執行T5。

如果任何任務中途失敗,則不執行相關作業。

我們如何使用 Celery 實現這一目標?

提前致謝!!!

是的,但這需要一些工作。 您將不得不使用chaingroupchord來獲得您想要的行為:

  1. 使用chain依次執行 T1、T2 和 T3:

     res = chain(T1.si(), T2.si(), T3.si())
  2. 使用group與 T4 並行執行(1):

     res2 = group(res.s(), T4.s())
  3. 使用chord在 T3 和 T4 完成后執行 T5 :

     res3 = chord(res2.s(), T5.s())
  4. 全部執行

    result = res3().get()

文檔很好地解釋了哪些用於串行,哪些用於並行。 要記住的棘手部分是chainchordgroup所有返回任務本身,因此必須使用()delay()apply_async()調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM