在Airflow中,可以使用@once
装饰器或者使用start_date
参数来设置任务只运行一次。
@once
装饰器from airflow import DAG
from airflow.decorators import dag, task
from airflow.utils.dates import days_ago
@dag(default_args={"owner": "airflow"}, schedule_interval=None, start_date=days_ago(1))
def my_dag():
@task
def initial_setup():
# 运行初始设置任务的代码
pass
initial_task = initial_setup()
dag = my_dag()
在上面的例子中,我们创建了一个DAG,并在DAG上使用了@dag
装饰器。我们将schedule_interval
参数设置为None
,这意味着DAG不会按照特定的时间表运行。我们还使用了start_date
参数将DAG的启动日期设置为前一天。
然后,我们使用@task
装饰器定义了一个任务函数initial_setup
,并在函数上使用了@once
装饰器。这样,这个任务将只运行一次。
start_date
参数from airflow import DAG
from airflow.decorators import dag, task
from airflow.utils.dates import days_ago
@dag(default_args={"owner": "airflow"}, schedule_interval=None, start_date=days_ago(1))
def my_dag():
@task
def initial_setup():
# 运行初始设置任务的代码
pass
initial_task = initial_setup()
dag = my_dag()
在这个例子中,我们使用了与上面相同的DAG定义。在DAG的start_date
参数中,我们将启动日期设置为前一天。这意味着DAG将在启动后立即运行。由于schedule_interval
参数设置为None
,DAG将不会按照特定的时间表运行,因此只会运行一次。
无论你选择使用@once
装饰器还是start_date
参数,都可以确保任务只运行一次。
上一篇:Airflow调度月度作业