我想使用execution_timeout
为我的BashOperator
设置一定的超时,但我注意到它提高了AirflowTaskTimeout
。
我正在寻找的是,在超时的情况下执行某种行为,然后从下一个任务继续 DAG。我可以使用 bashtimeout
,但我正在寻找相同功能的内部气流支持。
气流是否支持?
Airflow 有一个触发规则的概念。您可以将trigger_rule=one_failed
或trigger_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
:所有父母都处于失败或upstream_failed状态all_done
:所有父母都完成了他们的处决one_failed
:一旦至少有一个父项失败,就会触发,它不会等待所有父项都完成one_success
:一旦至少有一个父母成功就触发,它不会等待所有父母都完成none_failed
:所有父母都没有失败(失败或upstream_failed),即所有父母都成功或被跳过dummy
:依赖只是为了显示,随意触发