2017-06-05 6 views
0

に失敗し、私はDAGを持って並列に複数の独立したユニットに出ているファン。これは、AWSで実行するので、私たちはDAG、およびDAGが完了最小限に始まり、労働者の最大数まで、私たちAutoScalingGroupを拡張タスクを持っています。エアフロー - 上流の成功にかかわらず、タスクを実行/

  | - - taskA - - | 
      |    | 
scaleOut - | - - taskB - - | - scaleIn 
      |    | 
      | - - taskC - - | 

しかし、並列セット内のタスクの一部は時折失敗し、A-Cのタスクのいずれかが失敗したとき、私は実行するためにスケールダウンタスクを取得することはできません:簡易版は、次のようになります。

、一度他のすべてのタスクが(成功または失敗)が完了したタスクは、DAGの終わりに実行させる最良の方法は何ですか? depends_on_upstreamの設定は、私たちが必要なもののように聞こえますが、実際の試験に基づいて、何もしませんでした。

答えて

3

すべての演算子にはtrigger_ruleという引数があり、これは'all_done'に設定することができ、前のタスクの失敗または成功に関係なくそのタスクをトリガーします。

デフォルトの'all_success'の代わりに、実行するタスクのトリガールールを'all_done'に設定できます。

その引数を持つ単純なbashのオペレータータスクは次のようになり

task = BashOperator(
    task_id="hello_world", 
    bash_command="echo Hello World!", 
    trigger_rule="all_done", 
    dag=dag 
    ) 
関連する問題