目前我有一个dag,计划为@daily
,通常应该在午夜后触发,以运行前一天的数据。
不知怎的,它现在已经在上午11:30开始运行,因为过去的一次运行出现了问题,当时正在手动重新启动。现在它总是在那个时候触发。当然,这是由于调度算法在最后一次执行时间后一天触发它。
然而,人们并不完全希望在上午11点30分跑步。我希望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)
将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_de。最佳做法是将start_date四舍五入到DAG的schedule_interval。
schedule_interval
-定义DAG运行的频率,这个timedelta对象被添加到您最新任务实例的execution_date中,以确定下一个计划。
这将使它每天午夜使用CRON格式运行。
不幸的是,尽管我尽了最大努力使用其他答案,但我发现,在不冒数据库/调度程序奇怪风险的情况下,让重新设置执行时间的唯一一致方法是重命名DAG本身。
调度器算法将根据上一次执行时间+调度器延迟来计算下一次执行的时间。
如果这种情况发生了变化,而另一个答案有效,我会接受,因为这是我所期望的,但没有。