要让Airflow的子DAG在任务被跳过时显示为成功,可以通过在子DAG中添加一个DummyOperator来实现。DummyOperator是一个什么都不做的操作符,它可以用来代替实际的任务。
以下是一个示例代码,展示了如何在子DAG中使用DummyOperator来实现任务被跳过时显示为成功:
from airflow import DAG
from airflow.operators.dummy_operator import DummyOperator
from airflow.operators.subdag_operator import SubDagOperator
from datetime import datetime
def create_subdag(parent_dag_name, child_dag_name, args):
dag_subdag = DAG(
dag_id=f'{parent_dag_name}.{child_dag_name}',
default_args=args,
schedule_interval="@daily",
)
with dag_subdag:
dummy_task = DummyOperator(
task_id='dummy_task',
dag=dag_subdag
)
return dag_subdag
with DAG(
dag_id='parent_dag',
schedule_interval="@daily",
start_date=datetime(2022, 1, 1),
) as dag:
subdag_task = SubDagOperator(
task_id='subdag_task',
subdag=create_subdag('parent_dag', 'subdag_task', dag.default_args),
dag=dag
)
main_task = DummyOperator(
task_id='main_task',
dag=dag
)
subdag_task >> main_task
在上面的示例中,子DAG中的DummyOperator被命名为'dummy_task'。当任务被跳过时,该DummyOperator会被执行,并显示为成功。