在Airflow中,可以通过使用execution_date
参数来指定DAG的运行日期。如果未指定execution_date
,则Airflow将使用前一个有效的运行日期来触发DAG。
下面是一个示例解决方法的代码:
from datetime import datetime, timedelta
from airflow import DAG
from airflow.operators.dummy_operator import DummyOperator
default_args = {
'owner': 'airflow',
'start_date': datetime(2021, 1, 1),
'retries': 1,
'retry_delay': timedelta(minutes=1)
}
dag = DAG('example_dag', default_args=default_args, schedule_interval='@daily')
dummy_task = DummyOperator(task_id='dummy_task', dag=dag)
dummy_task
在上面的代码中,我们创建了一个名为example_dag
的DAG。start_date
参数指定了DAG的开始日期,schedule_interval
参数指定了DAG的调度间隔,这里设置为每天一次。
dummy_task
是一个示意的任务,实际中你可以根据自己的需求添加具体的任务。
当这个DAG被调度执行时,如果没有指定execution_date
参数,Airflow将会使用前一个有效的运行日期来触发DAG。也就是说,如果当前日期是2021年1月3日,那么Airflow会触发执行2021年1月2日的DAG任务。
需要注意的是,如果在第一次运行DAG之前,没有有效的前一个运行日期,Airflow将不会触发DAG的执行。所以在设置DAG的start_date
时,要确保它是一个过去的日期,以确保有一个有效的前一个运行日期。