气流 - 运行任务,无论上游成功/失败

时间:2017-06-05 02:21:19

标签: python airflow

我有一个DAG,并行地向多个独立单元扇出。这在AWS中运行,因此我们有一些任务可以将我们的AutoScalingGroup扩展到DAG启动时的最大工作数,并在DAG完成时达到最小值。简化版本如下所示:

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

但是,并行集中的某些任务偶尔会失败,并且当任何A-C任务失败时,我无法运行scaleDown任务。

一旦所有其他任务完成(成功或失败),在DAG结束时执行任务的最佳方法是什么? depends_on_upstream设置听起来像我们需要的,但实际上并没有根据测试做任何事情。

1 个答案:

答案 0 :(得分:16)

所有运算符都有一个参数trigger_rule,可以设置为'all_done',无论前一个任务是否失败或成功,都会触发该任务。

您可以将要运行的任务的触发规则设置为'all_done',而不是默认'all_success'

使用该参数的简单bash运算符任务如下所示:

task = BashOperator(
    task_id="hello_world",
    bash_command="echo Hello World!",
    trigger_rule="all_done",
    dag=dag
    )