Airflow DAG在创建之后会根据start_date
开始运行,但默认情况下,如果start_date
设置在过去的时间,DAG不会自动运行任务。相反,DAG只会等待下一个调度周期开始时运行。这种行为是为了防止意外地运行过去的任务。
如果想要DAG立即开始运行,可以使用catchup=False
参数来禁用DAG的回溯功能。这样,即使start_date
设置在过去,DAG也会立即开始运行。
以下是一个示例代码,演示如何在创建DAG时使用catchup=False
参数来解决该问题:
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from datetime import datetime
default_args = {
'start_date': datetime(2022, 1, 1),
'catchup': False
}
with DAG('example_dag', default_args=default_args, schedule_interval='@daily') as dag:
task1 = BashOperator(
task_id='task1',
bash_command='echo "Task 1"',
)
task2 = BashOperator(
task_id='task2',
bash_command='echo "Task 2"',
)
task1 >> task2
在上面的示例中,DAG的start_date
设置为2022年1月1日,并且catchup
参数被设置为False。这意味着无论何时启动DAG,它都会从指定的start_date
开始运行,而不会回溯运行过去的任务。