Airflow 气流-如何将一个操作员的输出数据作为输入传递给另一个任务

Airflow 气流-如何将一个操作员的输出数据作为输入传递给另一个任务,airflow,Airflow,我有一个http端点列表,每个端点各自执行一项任务。我们正在尝试编写一个应用程序,它将通过按特定顺序调用这些端点来进行编排。在这个解决方案中,我们还必须处理一个http端点的输出,并为下一个http端点生成输入。此外,根据触发器的不同,可以同时调用相同的工作流 我到现在为止所做的, 1.定义了从HttpOperator派生的新操作符,并引入了将http端点的输出写入文件的功能。 2.已经编写了一个python操作符,它可以根据必要的逻辑传输输出 由于我可以在执行同一工作流的多个实例,因此无法硬编

我有一个http端点列表,每个端点各自执行一项任务。我们正在尝试编写一个应用程序,它将通过按特定顺序调用这些端点来进行编排。在这个解决方案中,我们还必须处理一个http端点的输出,并为下一个http端点生成输入。此外,根据触发器的不同,可以同时调用相同的工作流

我到现在为止所做的, 1.定义了从HttpOperator派生的新操作符,并引入了将http端点的输出写入文件的功能。 2.已经编写了一个python操作符,它可以根据必要的逻辑传输输出


由于我可以在执行同一工作流的多个实例,因此无法硬编码输出文件名。是否有一种方法可以使我编写的http运算符写入一些唯一的文件名,并且下一个任务应该可以使用相同的文件名,以便它可以读取和处理输出。

Airflow确实有一个用于操作员交叉通信的功能,称为XCom

XCOM可以“推送”(发送)或“拉送”(接收)。当一个任务推送一个XCom时,它使它通常可用于其他任务。任务可以通过调用xcom\u push()方法随时推送xcom

任务调用xcom_pull()来检索xcom,可以选择根据关键字、源任务id和源dag_id等条件应用过滤器

推送至XCOM使用

ti.xcom_push(key=<variable name>, value=<variable value>)
ti.xcom\u推送(键=,值=)
要拉取XCOM对象,请使用

myxcom_val = ti.xcom_pull(key=<variable name>, task_ids='<task to pull from>')
myxcom\u val=ti.xcom\u pull(键=,任务ID=“”)
使用bash操作符,只需设置
xcom\u push=True
,stdout中的最后一行被设置为xcom对象


您只需从airflow UI打开tast execution并单击xcom选项卡,即可查看xcom对象,即任务正在运行的文件。

要在任务之间传递数据,请使用