预定DAG的气流DAG延迟一天,但没有手动触发

时间:2018-07-02 11:57:24

标签: airflow airflow-scheduler

我使用 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界面显示:

enter image description here

代替 2018-07-01

但是如果我手动触发 当前日期已正确传递:

enter image description here

是否可以强制调度程序以当前日期运行?

2 个答案:

答案 0 :(得分:2)

这是正确的,并且是气流设计的一部分。如果您查看here,将会看到说明:

  

请注意,如果您以一天的schedule_interval运行DAG,则在2016-01-01T23:59之后不久将触发标记为2016-01-01的运行。换句话说,作业实例所涵盖的时间段结束后便开始启动。

     

让我们重复一遍。计划程序会在开始日期之后(周期结束时)一个schedule_interval运行您的作业。

答案 1 :(得分:0)

您的schedule_intervalschedule_interval='20 40 * * *'。请记住,schedule_interval是CRON格式,或(分钟小时日(月)月日(周)。由于调度器无法每40小时运行一次,因此您当前的调度实际上是不正确的。您是否要使其每20小时在第40分钟运行一次?如果可以,请尝试schedule_interval='40 20 * * *'

此外,如果希望它运行最近的一天,请将catchup设置为catchup=False。有了这两个修复程序,它应该可以工作。请访问此网站以获取更多CRON帮助。