由于执行日期和开始日期,无法运行Airflow任务

时间:2017-09-13 20:23:44

标签: airflow

每当我尝试运行DAG时,它都将处于运行状态,但任务将无法运行。我已将开始日期设置为datetime.today(),并将我的计划间隔设置为" * * * * *"。手动触发运行将启动dag但由于以下任务将无法运行:

执行日期为2017-09-13T00:00:00,但这是在任务的开始日期2017-09-13T16:20:30.363268之前。

我尝试了各种计划间隔组合(例如每天的特定时间)以及等待触发dag和手动触发。似乎没什么用。

3 个答案:

答案 0 :(得分:2)

谷歌把我送到这里,我遇到了和你一样的问题。我被定义为今天的start_date

'start_date': datetime.today()

当我使用较旧的日期(例如7天前)时,问题就解决了

seven_days_ago = datetime.combine(datetime.today() - timedelta(7),
                                  datetime.min.time())
args = {
    'owner': 'airflow',
    'start_date': seven_days_ago,
    'depends_on_past': False,
}

我找到了这个解释Airflow Docs

答案 1 :(得分:1)

尝试重新启动调度程序,这对我有用。

答案 2 :(得分:0)

首先start_date是一个任务属性;但一般来说,它是在default_args中设置的,并且像dag属性一样使用。

该消息非常清楚,如果任务的execution_date位于任务的start_date之前,则无法计划该任务。您可以将start_date设置为较小的值:

import datetime

default_args = {
    'start_date': datetime.datetime(2019, 1, 1)  # hard coded date
}

import airflow

default_args = {
    'start_date': airflow.utils.dates.days_ago(7)  # 7 days ago
}

来自Airflow Documentation

  

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

     

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

因此,当您安排dag时,任何dag_run的execution_date将小于其开始时间。每天会有24小时的差异。

我们可以说开始时间= execution_date + schedule_interval