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

Airflow 由于执行日期和开始日期,无法运行任务,airflow,Airflow,每当我尝试运行DAG时,它将处于运行状态,但任务将不会运行。我已将开始日期设置为datetime.today(),日程间隔设置为“***”。手动触发运行将启动dag,但由于以下原因,任务将无法运行: 执行日期为2017-09-13T00:00:00,但在任务开始日期2017-09-13T16:20:30.363268之前 我尝试了各种计划间隔组合(例如每天的特定时间),以及等待dag被触发和手动触发。似乎什么都不起作用。尝试重新启动调度程序,这对我来说很有效 谷歌发送我到这里,我和你有同样的问题

每当我尝试运行DAG时,它将处于运行状态,但任务将不会运行。我已将开始日期设置为datetime.today(),日程间隔设置为“***”。手动触发运行将启动dag,但由于以下原因,任务将无法运行:

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


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

尝试重新启动调度程序,这对我来说很有效

谷歌发送我到这里,我和你有同样的问题。我被定义为今天的开始日期

'start_date': datetime.today()
当我使用较旧的日期(例如7天前)时,问题得到了解决


我发现这个解释

首先
开始日期
是一个任务属性;但一般来说,它是在
default_args
中设置的,与dag属性一样使用

消息非常清楚,如果任务的
执行日期早于任务的
开始日期
,则无法对其进行计划。您可以设置
start\u date
较小的值:

import datetime

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

请注意,如果您以一天的时间间隔运行DAG,则在2016-01-01T23:59之后不久将触发标有2016-01-01的运行。换句话说,一旦作业实例所覆盖的时间段结束,它就会启动

让我们重复一下调度程序在开始日期之后的一个调度时间间隔内,在该时段结束时运行作业

因此,当您计划dag时,任何dag运行的执行日期都将小于其开始时间。对于每日,将有24小时的差异

我们可以说开始时间=
execution\u date
+
schedule\u interval


(开始时间不是
start\u date
,它只是dag运行的开始时间)

尝试将dag的开始日期硬编码为
datetime(2017,9,12)
,而不是
datetime.today()
。有一些关于此的详细信息。如果要手动触发,可以通过设置schedule_interval:none和手动触发dag来禁用。如果希望对其进行调度,请确保worker和schedular正在运行。下面的设置对我来说很好(每运行2分钟一次):start\u date:datetime.utcnow()-timedelta(分钟=2),schedule\u interval:timedelta(分钟=2)。不幸的是,我尝试了上述所有建议,但似乎没有任何效果@VinodVutpala使用您的开始日期和时间间隔,我仍然得到:执行日期是2017-09-14T00:00:00,但这比任务的开始日期2017-09-14T13:16:33.998064早。但是现在我也得到了:任务实例的dagrun不存在:未知原因。我想知道这是否是一个工人问题。这个问题背后的解释是什么?“我们可以说开始时间=执行日期+计划间隔”,这意味着开始时间>执行日期。你是不是想换个方向?当然,开始时间是时间表上的第一个点,所有执行日期都在它之后。我的意思是“开始时间”是“特定dag运行的开始时间”。示例:我有一个每日计划的dag,有一个dag运行从2020-11-23T00:00开始,它的执行日期将是2020-11-22T00:00。公式:2020-11-23T00:00=2020-11-22T00:00+24小时(计划间隔)。换句话说:DAG是周期性运行的,执行日期是周期的开始,DAG在周期结束时开始运行,在这里是“开始时间”。(代码中不是开始日期)
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
}