第一个0 1 * * *
的Dag毫无问题地运行了。结束DAG 0 10 1 * *
没有运行。
当我这样做时:
import datetime
print datetime.datetime.now()
我得到:
2018-07-01 12:14:15.632812
所以我不明白为什么尚未安排此DAG。据我了解,并非必须严格在10:00运行,但统计信息应为Running
。
根据第一个任务的“最新运行”,是2018-06-30 01:00
,我怀疑我实际上并不了解气流时钟。从我的角度来看,最后一次运行是在2018-07-01 01:00
上,因为它是今天早上而不是昨天运行的。
编辑: 我在documntation看到了这一段:
”,请注意,如果您以一天的schedule_interval运行DAG,则在2016-01-01T23:59之后将立即触发标记为2016-01-01的运行。换句话说,一旦涵盖的期限已经结束。“
所以我想知道..我应该将所有时间安排在我想要的实际日期的前一天吗?
因此,如果我确实希望某事在0 10 1 * *
上运行,应该将其安排到0 10 30 * *
吗?换句话说,如果我想在每个月的10:00运行某些内容,我应该将其安排在每个月的10:00的最后一天吗?
其中的逻辑在哪里?这很难理解和遵循。
根据this的说法,情况变得更糟,无法将调度程序的信息告知调度程序。我该怎么办?!
答案 0 :(得分:8)
Airflow计划任务以计划时间间隔的 END 运行。这可能有点反常,但是基于这样的想法,即在该时间间隔结束之前,特定时间间隔的数据才可用。
假设您的工作流应该每天运行。在当天(今天)结束之前,您无法获取昨天的所有数据。
在您的情况下,第一个DAG的上次运行是在昨天才有意义,因为那是与该DagRun相关的“ execution_date”-您的DAG在今天运行了昨天的数据。 >
如果您希望DAG在每个月的1号运行,那么更改计划并不是一个坏主意。但是,如果您希望DAG运行每个月1号的关联数据(即将该日期传递到API请求或SQL查询中),那么就正确了。