Airflow Trigger Rule Task dependencies是Airflow中控制任务之间依赖关系和任务触发顺序的一种机制。常用的Trigger Rule有 all_success、all_failed、one_success、none_failed 等四种。
以 all_success 为例,表示一个 DAG 内的任务必须都成功才能触发下一个任务的执行。以下是一个包含 Trigger Rule 的 DAG 示例代码:
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from datetime import datetime
default_args = {
'owner': 'airflow',
'depends_on_past': False,
'start_date': datetime(2021, 4, 1),
'email_on_failure': False,
'email_on_retry': False,
'retries': 1
}
dag = DAG(dag_id='example_trigger_rule',
default_args=default_args,
catchup=False,
schedule_interval='@once')
t1 = BashOperator(
task_id='task_1',
bash_command='exit 0',
dag=dag)
t2 = BashOperator(
task_id='task_2',
bash_command='exit 0',
dag=dag)
t3 = BashOperator(
task_id='task_3',
bash_command='exit 0',
trigger_rule='all_success',
dag=dag)
t4 = BashOperator(
task_id='task_4',
bash_command='exit 0',
dag=dag)
t5 = BashOperator(
task_id='task_5',
bash_command='exit 0',
dag=dag)
t1 >> t2 >> t3
t3 >> t4
t3 >> t5
在 DAG 中,t1、t2、t3、t4、t5 五个任务依次执行。其中,t3 设置了 Trigger Rule 为 all_success,表示 t1、t2、t3 三个任务必须都成功才能触发 t4、t5 任务的执行。因为 t2 和 t3 的命令都是 exit 0,表示成功执行,因此 t4 和 t5 会被触发执行。
以上是一个使用 Trigger Rule 的简单示例,具体使用过程中需要根据实际情况选择适合的 Trigger Rule,以满足 DAG 中任务之间的依赖关系要求。