在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参数将会覆盖任务级别的结束时间设置。