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