我有一个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)
| 归档时间: |
|
| 查看次数: |
6339 次 |
| 最近记录: |