重置气流DAG的执行时间

时间:2018-08-01 16:30:09

标签: python etl airflow airflow-scheduler

当前我有一个排定为@daily的dag,通常应该在午夜之后触发以使用前一天的数据。

以某种方式,由于过去运行出现问题,因此现在已在11:30 AM开始运行,并在那时手动重新启动。现在它总是在那个时候触发。当然,这是由于调度算法在上次执行时间的一天后触发了它。

但是,并非完全希望在上午1130点运行。我希望能够以某种方式让DAG在午夜启动。

我有什么选择?我可以随时更改名称,但是如果将来发生这种情况,是否可以轻松编写脚本?

气流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)

2 个答案:

答案 0 :(得分:2)

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

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

start_date(日期时间)–任务的开始日期,确定第一个任务实例的执行日期。最佳做法是将开始日期四舍五入到DAG的schedule_interval。

schedule_interval-定义DAG运行的频率,此timedelta对象将添加到最新任务实例的execute_date中,以计算下一个计划。

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

答案 1 :(得分:0)

不幸的是,尽管我尽了最大努力来使用其他答案,但我发现使气流达到重置执行时间而又不冒数据库/调度程序异常的唯一一致的方法是重命名DAG本身。

调度程序算法将从上一个执行时间+调度程序延迟中计算出下一个执行时间。

如果这种情况改变了,并且其他答案可行,那么我会接受的,因为这是我期望的工作,但是没有。