2017-01-25 8 views
1

セロリーには新しく、いくつかのジョブのスケジューリングに使用する予定です。シナリオの1つは以下の通りです。上記ケースからセロリを使った並列実行とシーケンシャル実行

TASK_NM | DEPENDENCY 

T1 

T2  |  T1 

T3  |  T1 

T4 

T5  |  T3 and T4 

  1. Iは平行

  2. にT2およびT3を実行し、T1が正常に完了した後、並列

  3. にT1及びT4を実行する必要がT3とT4が正常に終了したら、T5を実行します。

途中で失敗したタスクがある場合は、依存ジョブを実行しないでください。

セロリーを使用してこれをどのように達成できますか?

ありがとうございました!!!

答えて

0

はい、動作する必要があります。

  1. がシリアルchainを使用することにより、T1、T2及びT3を実行します:あなたが望む動作を取得するためにchain, group, and chordを使用するHVEます

    res = chain(T1.si(), T2.si(), T3.si()) 
    
  2. 実行(1)を使用して、T4と並行して、 group

    res2 = group(res.s(), T4.s()) 
    
  3. T3とT4はchordを使用して完了した後、T5を実行します。

    res3 = chord(res2.s(), T5.s()) 
    
  4. はすべて

    result = res3().get() 
    

ドキュメントがシリアルに使用すると、並列に使用するどの説明するのはかなり良い仕事をする、それを実行します。覚えておくべき細かいところは、chain,chordgroupすべての戻りタスク自体が(),delay()またはapply_async()を使用して呼び出される必要があることです。