在Airflow中,@once是一个特殊的参数,可以将任务设置为只执行一次。当我们在DAG中使用@once时,不需要指定start_date参数,因为DAG中的每个任务都会在DAG运行时立即启动。
如果您需要指定start_date参数,并且想要任务仅在该日期后运行,可以使用Python中的datetime对象来指定date和time。下面是一个示例代码:
from datetime import datetime
from airflow.models import DAG
from airflow.operators.bash_operator import BashOperator
start_date = datetime(2022, 1, 1)
default_args = {
"start_date": start_date
}
dag = DAG(
dag_id="my_dag",
default_args=default_args,
schedule_interval=None
)
task1 = BashOperator(
task_id="task_one",
bash_command="echo 'Hello World!'",
dag=dag
)
在上面的代码中,我们创建了一个名为my_dag的DAG,并使用start_date参数指定了DAG的开始日期。我们还创建了一个名为task_one的BashOperator任务,并将其添加到DAG中。由于我们使用了@once,任务将在DAG运行时立即启动。