在Airflow中,可以使用上下文回调函数来获取操作符的属性。下面是一个示例:
from airflow import DAG
from airflow.operators.python_operator import PythonOperator
from datetime import datetime
def my_callback_func(**kwargs):
# 从kwargs中获取操作符的属性
task_instance = kwargs['ti']
task_id = task_instance.task_id
execution_date = kwargs['execution_date']
# 打印操作符的属性
print(f"Task ID: {task_id}")
print(f"Execution Date: {execution_date}")
dag = DAG('my_dag', start_date=datetime(2022, 1, 1))
task1 = PythonOperator(
task_id='task1',
python_callable=my_callback_func,
provide_context=True,
dag=dag
)
task2 = PythonOperator(
task_id='task2',
python_callable=my_callback_func,
provide_context=True,
dag=dag
)
task1 >> task2
在上面的示例中,我们定义了一个名为my_callback_func
的回调函数,它接受**kwargs
作为参数来获取操作符的属性。然后,我们使用PythonOperator
来创建两个任务task1
和task2
,并将my_callback_func
作为回调函数传递给python_callable
参数。同时,我们还将provide_context
参数设置为True
,以便将上下文传递给回调函数。
当DAG运行时,每个任务的回调函数将被调用,并从kwargs
中获取任务的属性,如task_id
和execution_date
。然后,我们可以在回调函数中使用这些属性进行任何需要的操作。
希望这个示例能够帮助你理解如何使用上下文回调函数获取操作符的属性。