我是一名数据工程师,并定期处理气流。
当使用新的开始日期重新部署dag时,最佳做法如here所示:
请勿更改开始日期+间隔:运行DAG后,调度程序数据库将包含该DAG运行的实例。如果更改start_date或时间间隔并重新部署它,则调度程序可能会感到困惑,因为时间间隔不同或start_date倒退了。解决此问题的最佳方法是,只要更改start_date或时间间隔,即my_dag_v1和my_dag_v1,就应立即更改DAG的版本。这样,还可以保留有关旧版本的历史信息。
但是,删除所有先前的DAG和任务运行后,我尝试重新部署具有新开始日期的dag。它按照预期的方式(以新的开始日期)工作了一天,然后又开始与旧的方式一起使用
这是什么原因?如果可以,请深入了解。
答案 0 :(得分:1)
Airflow在表dag_run
中维护有关过去运行的所有信息。
清除先前的dag运行时,这些条目将从数据库中删除。因此,气流将这个dag视为一个新dag,并在指定的时间开始。
Airflow检查最后一次执行dag的时间(上次运行的start_date
),并添加您在timedelta
中指定的schedule_interval
对象。
如果即使清除dag运行后仍遇到困难,则可以执行以下操作:
schedule_interval
中使用crontab表达式。