当前我有一个排定为@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)
答案 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本身。
调度程序算法将从上一个执行时间+调度程序延迟中计算出下一个执行时间。
如果这种情况改变了,并且其他答案可行,那么我会接受的,因为这是我期望的工作,但是没有。