Airflow 2.5.0:定义schedule参数后为何无法用dag.schedule访问?
Airflow 2.5.0中DAG实例无法访问
dag.schedule属性的原因及解决办法 问题原因
Airflow 2.2版本开始引入schedule参数作为schedule_interval的别名,目的是让参数命名更直观,但这个schedule仅作为DAG构造函数的输入参数存在,并没有被设置为DAG实例的直接属性。当你传入schedule='@daily'实例化DAG时,底层会将该值赋值给DAG实例的schedule_interval属性,因此只能通过dag.schedule_interval访问调度配置,dag.schedule属性并不存在,这就是报错的核心原因。
而start_date、catchup属于DAG实例的原生属性,因此可以直接访问。
解决办法
将代码中的dag.schedule替换为dag.schedule_interval即可解决报错:
args = {'start_date': dag.start_date, 'schedule': dag.schedule_interval, 'catchup': dag.catchup}
如果你的子DAG定义中使用的是schedule_interval参数,也可以将args里的键改为schedule_interval,保持参数名统一,避免后续混淆:
args = {'start_date': dag.start_date, 'schedule_interval': dag.schedule_interval, 'catchup': dag.catchup}
内容的提问来源于stack exchange,提问作者Austin Wolff
相关产品推荐
相关产品推荐

