每当我尝试运行DAG时,它都将处于运行状态,但任务将无法运行。我已将开始日期设置为datetime.today(),并将我的计划间隔设置为" * * * * *"。手动触发运行将启动dag但由于以下任务将无法运行:
执行日期为2017-09-13T00:00:00,但这是在任务的开始日期2017-09-13T16:20:30.363268之前。
我尝试了各种计划间隔组合(例如每天的特定时间)以及等待触发dag和手动触发。似乎没什么用。
答案 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
}
请注意,如果您以一天的schedule_interval运行DAG,则在2016-01-01T23:59之后不久将触发标记为2016-01-01的运行。换句话说,作业实例所涵盖的时间段结束后便开始启动。
让我们重复一遍。计划程序会在开始日期之后(周期结束时)一个schedule_interval运行您的作业。
因此,当您安排dag时,任何dag_run的execution_date
将小于其开始时间。每天会有24小时的差异。
我们可以说开始时间= execution_date
+ schedule_interval