第一个Dag 0 1 * * *
跑了没有任何问题.结束DAG 0 10 1 * *
没有运行.当我做:
import datetime
print datetime.datetime.now()
Run Code Online (Sandbox Code Playgroud)
我明白了:
2018-07-01 12:14:15.632812
Run Code Online (Sandbox Code Playgroud)
所以我不明白为什么没有安排这个DAG.我知道在10:00准确运行不是强制性的,但统计数据应该是Running
.
根据"最新运行"的第一个任务是2018-06-30 01:00
我怀疑我实际上并不了解Airflow时钟.从我的观点来看,最后一次运行是2018-07-01 01:00
因为它今天早上而不是昨天运行.
编辑: 我在documntation看到了这一段:
"请注意,如果您在一天的schedule_interval上运行DAG,则2016-01-01的运行标记将在2016-01-01T23:59之后很快触发.换句话说,作业实例将在其涵盖的时间段内启动结束了."
所以我想知道..我应该在我想要的实际日期前一天安排一切?所以,如果我真的想要运行一些东西,0 10 1 * *
我应该安排它 0 10 30 * *
?换句话说,如果我想在每个月的第一天10点运行一些东西,我应该把它安排到每个月的最后一天10点?
那逻辑在哪里?这很难理解和遵循.
它变得最糟糕,根据这个没有办法告诉调度程序这个输入.我是什么做的?!
Vir*_*ekh 11
气流计划任务在计划间隔的END处运行.这可能有点直观,但是基于这样的想法,即在该间隔结束之前,特定间隔的数据不可用.
假设您有一个应该每天运行的工作流程.在那天(今天)结束之前,你无法获得昨天的所有数据.
在你的情况下,第一个DAG的最后一次运行是昨天,因为那是与该DagRun相关的"execution_date" - 你的DAG今天运行昨天的数据是有道理的.
如果你希望你的DAG在每个月的1号运行,那么改变时间表并不是一个坏主意.但是,如果您希望DAG针对每月1日关联的数据运行(即将该日期传递给API请求或SQL查询),那么您就是正确的.
归档时间: |
|
查看次数: |
3629 次 |
最近记录: |