气流-在不杀死DAG的情况下超时任务

时间:2019-04-02 07:26:18

标签: airflow

我想使用BashOperator为我的execution_timeout设置一个特定的超时时间,但是我注意到它提高了AirflowTaskTimeout

我要寻找的是在超时的情况下执行某种行为,然后从下一个任务继续执行DAG。我可以使用bash timeout,但是我正在寻找对相同功能的内部Airflow支持。

Airflow支持吗?

1 个答案:

答案 0 :(得分:0)

气流的概念是Trigger Rules。您可以将trigger_rule=one_failedtrigger_rule=all_done传递到下一个任务。您可以拥有2个直接依赖于第一个任务的任务。

例如:

task_a >> task_b (trigger_rule='all_success') >> task_d (trigger_rule='one_success')
task_a >> task_c (trigger_rule='all_failed') >> task_d (trigger_rule='one_success')

从文档中

所有运算符都有一个trigger_rule参数,该参数定义触发生成的任务的规则。 trigger_rule的默认值为all_success,可以将其定义为“当所有直接上游任务都成功时触发此任务”。这里描述的所有其他规则都是基于直接父任务,并且是在创建任务时可以传递给任何运算符的值:

  • all_success :(默认)所有父母都成功
  • all_failed:所有父母均处于失败或上游失败状态
  • all_done:所有父母都已执行死刑
  • one_failed:至少有一位父母失败后立即解雇,它不会等待所有父母都完成
  • one_success:至少一位父母成功后就会解雇,它不会等待所有父母都完成
  • none_failed:所有父母都没有失败(失败或上游失败),即所有父母都成功或被跳过了
  • dummy:相关性仅用于显示,可以随意触发