Airflow 为什么在不重命名dag的情况下更改开始日期?

Airflow 为什么在不重命名dag的情况下更改开始日期?,airflow,airflow-scheduler,Airflow,Airflow Scheduler,我是一名数据工程师,定期与airflow合作 使用新的开始日期重新部署DAG时,最佳做法如下所示: 不更改开始日期+间隔:运行DAG后,调度程序数据库包含该DAG运行的实例。如果更改开始日期或间隔并重新部署,计划程序可能会混淆,因为间隔不同或开始日期早于此。处理此问题的最佳方法是在更改开始日期或间隔(即my_DAG_v1和my_DAG_v1)后立即更改DAG的版本。这样,旧版本的历史信息也得以保存 但是,在删除所有以前的DAG和任务运行后,我尝试重新部署具有新开始日期的DAG。它按预期工作了一天

我是一名数据工程师,定期与airflow合作

使用新的开始日期重新部署DAG时,最佳做法如下所示:

不更改开始日期+间隔:运行DAG后,调度程序数据库包含该DAG运行的实例。如果更改开始日期或间隔并重新部署,计划程序可能会混淆,因为间隔不同或开始日期早于此。处理此问题的最佳方法是在更改开始日期或间隔(即my_DAG_v1和my_DAG_v1)后立即更改DAG的版本。这样,旧版本的历史信息也得以保存

但是,在删除所有以前的DAG和任务运行后,我尝试重新部署具有新开始日期的DAG。它按预期工作了一天(使用新的开始日期),然后又开始使用旧的


原因是什么?如果可以,请深入查看。

气流将有关过去运行的所有信息保存在表中
dag\u run

清除以前的dag运行时,这些条目将从数据库中删除。因此,气流将此dag视为新dag,并在指定时间开始

气流检查最后一次dag执行时间(
start\u date
last run),并添加您在
schedule\u interval
中指定的
timedelta
对象

如果您在清除dag运行后仍有困难,您可以做以下几件事:

  • 按照建议重命名dag
  • 清除所有dag运行,保持dag暂停。创建dag管路,然后启用dag。它将在以后的预定时间运行
  • 最好的方法是在
    schedule\u interval
    中使用crontab表达式

  • 气流的
    调度程序
    正在进行工程设计。它有其合理的细微差别,并且已经被提出。在此之前,您必须定期重新启动它(对于几乎所有长时间运行的进程都是如此)。至少改变
    start\u date
    schedule\u interval
    需要立即重新启动(或者你会遇到一些惊喜)我做了3个<代码>计划间隔='0 4***'我有意避免1。同样2也没有意义,因为我第一天就让它工作了,然后它就不正常了。