我使用 Airflow 1.8.0 我有一个像这样的DAG:
default_args = {
'owner': 'airflow',
'depends_on_past': False,
'email': ['technical@me.com'],
'start_date': datetime.datetime(2018, 5, 21),
'email_on_retry': False,
'retries': 0
}
dag = DAG('my_dag',
schedule_interval='40 20 * * *',
catchup=True,
default_args=default_args)
每天正确安排dag,但要迟到一天。
鉴于今天的日期是
2018-07-02
Web界面显示:
代替 2018-07-01
但是如果我手动触发 当前日期已正确传递:
是否可以强制调度程序以当前日期运行?
答案 0 :(得分:2)
这是正确的,并且是气流设计的一部分。如果您查看here,将会看到说明:
请注意,如果您以一天的schedule_interval运行DAG,则在2016-01-01T23:59之后不久将触发标记为2016-01-01的运行。换句话说,作业实例所涵盖的时间段结束后便开始启动。
让我们重复一遍。计划程序会在开始日期之后(周期结束时)一个schedule_interval运行您的作业。
答案 1 :(得分:0)
您的schedule_interval
是schedule_interval='20 40 * * *'
。请记住,schedule_interval
是CRON格式,或(分钟小时日(月)月日(周)。由于调度器无法每40小时运行一次,因此您当前的调度实际上是不正确的。您是否要使其每20小时在第40分钟运行一次?如果可以,请尝试schedule_interval='40 20 * * *'
。
此外,如果希望它运行最近的一天,请将catchup
设置为catchup=False
。有了这两个修复程序,它应该可以工作。请访问此网站以获取更多CRON帮助。