重置气流 DAG 执行时间

Reset airflow DAG execution time

目前我有一个计划 @daily 的 dag,通常应该在前一天的数据 运行 午夜之后触发。

不知何故,由于 运行 过去出现问题并在当时手动重新启动,它现在已在 11:30AM 开始 运行。现在它总是在那个时候触发。这当然是由于调度算法在最后一次执行时间后一天触发它。

但是,运行上午 1130 点并不是我们想要的。我希望能够以某种方式让 DAG 在午夜启动。

我有哪些选择?我可以随时更改名称,但有没有一种方法可以让我轻松地编写脚本if/when 将来会发生这种情况?

气流 1.8

DAG代码:

dag = DAG('my_dag_v5',
          catchup=False,
          default_args=args, 
          start_date=datetime.datetime(2018, 1, 30), 
          schedule_interval='@daily',
          max_active_runs=1)

schedule_interval='@daily' 更改为 schedule_interval='0 0 * * *'

还将您的开始日期从 start_date=datetime.datetime(2018, 1, 30, 4, 0) 更改为 start_date=datetime(2018, 1, 30)

start_date (datetime) – 任务的 start_date 决定了第一个任务实例的 execution_date。最佳做法是将 start_date 四舍五入为 DAG 的 schedule_interval.

schedule_interval- 定义 DAG 运行 的频率,这个 timedelta 对象被添加到您最新的任务实例的 execution_date 中以确定下一个计划。

这将使 运行 每天午夜使用 CRON 格式。

不幸的是,尽管我尽最大努力使用其他答案,但我发现唯一一致的方法是让气流达到 reset 执行时间而不冒 database/scheduler 奇怪的风险就是重命名DAG本身。

调度程序算法将根据上一次执行时间 + 调度程序延迟计算下一次执行时间。

如果这个改变,并且另一个答案有效,我会接受,因为这是我期望的,但没有。