在 Airflow 中,task_instance 是 DAG 中每个任务实例的对象,而 xcom_pull 则是从其他任务的 XCom 中检索数据的方法。
根据 Airflow 官方文档的解释,task_instance.xcom_pull 的语法是:
task_instance.xcom_pull(key=None, task_ids=None, dag_id=None, include_prior_dates=False, coerce=False)
其中,参数的含义分别是:
基于此,我们可以用以下代码示例来演示 xcom_pull 的用法:
from airflow.models import DAG, TaskInstance
from datetime import datetime
default_args = {
'owner': 'airflow',
'start_date': datetime(2022, 1, 1),
}
with DAG('test_dag', default_args=default_args, schedule_interval='@once') as dag:
task1 = BashOperator(
task_id='task1',
bash_command='echo "task1 executed"',
xcom_push=True,
)
task2 = BashOperator(
task_id='task2',
bash_command='echo "{{ ti.xcom_pull(task_ids="task1") }}"',
)
task1 >> task2
在这个示例 DAG 中,我们创建了两个任务。第一个任务 task1 用于推送数据到 XCom 中,第二个任务 task2 则通过 xcom_pull 方法从 task1 的 XCom 中提取任务输出的数据。具体地,