使用TriggerDagRunOperator传参至Airflow子DAG时遇未定义错误
问题原因分析
你的错误根源是混淆了Python函数参数和Airflow Jinja模板上下文变量:
- 父DAG的
date_start、date_end是定义DAG的Python函数parent_dag的参数,属于Python代码层面的变量,并非Airflow模板上下文里的可渲染变量。 - 你在
conf里用{{date_start}}的Jinja语法时,Airflow会尝试从模板上下文(比如execution_date、dag_run.conf等内置变量)查找这个变量,但上下文里并没有该变量,因此抛出UndefinedError。
修复方案
直接使用Python变量传递参数,无需Jinja模板语法:
@dag(default_args=default_args, catchup=False, #schedule_interval=DAG_SCHEDULE_INTERVAL, dagrun_timeout=timedelta(seconds=3600), tags=["tag1"], doc_md=DOC_MD, max_active_runs=1) def parent_dag(date_start="", date_end=""): triggered_dag = TriggerDagRunOperator( task_id='triggered_dag', trigger_dag_id='triggered_dag', conf={"date_start": date_start, "date_end": date_end} # 直接引用Python函数参数 ) triggered_dag dag = parent_dag()
另外注意你原代码中date_end的取值错误写成了date_start,修复时需修正为date_end。
内容的提问来源于stack exchange,提问作者Cristian Ispan
相关产品推荐
相关产品推荐

