在Airflow中,任务级别的end_date
参数默认是不起作用的。end_date
参数只对DAG
级别的任务起作用。
如果你想要在任务级别上设置一个任务的结束时间,你可以使用PythonOperator
或BashOperator
来实现。以下是一个使用PythonOperator
的示例代码:
from datetime import datetime
from airflow import DAG
from airflow.operators.python_operator import PythonOperator
def my_task():
# 在这里编写你的任务逻辑
dag = DAG(
'my_dag',
schedule_interval=None, # 设置为None以禁用自动调度
start_date=datetime(2022, 1, 1),
catchup=False
)
task1 = PythonOperator(
task_id='my_task1',
python_callable=my_task,
dag=dag
)
task2 = PythonOperator(
task_id='my_task2',
python_callable=my_task,
dag=dag
)
task1 >> task2
在上面的示例中,我们创建了一个名为my_dag
的DAG
,并禁用了自动调度。然后,我们使用PythonOperator
创建了两个任务task1
和task2
,它们都使用相同的my_task
函数作为任务逻辑。这样,你可以在my_task
函数中编写你的任务逻辑,并在任务级别上设置结束时间。
请注意,这种方法只适用于禁用了自动调度的DAG
。如果你的DAG
是自动调度的,end_date
参数将会覆盖任务级别的结束时间设置。