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

J. *_*Doe 13 python airflow

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

           | - - taskA - - |
           |               |
scaleOut - | - - taskB - - | - scaleIn
           |               |
           | - - taskC - - |
Run Code Online (Sandbox Code Playgroud)

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

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

Nic*_*ick 23

所有操作符都有一个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
    )
Run Code Online (Sandbox Code Playgroud)

  • 最好使用`TriggerRule.ALL_DONE` (5认同)
  • 我遇到了一个问题,我已将任务的触发规则指定为“一个失败”,并且任务在上游执行失败。有没有办法只在 one_failed 上执行任务,而不是在上游失败时执行任务? (2认同)