将XCom与BashOperator一起使用:将多行sdout输出推送到其他任务吗?

时间:2019-07-18 15:28:43

标签: airflow apache-airflow-xcom

根据文档“ If xcom_push is True,当bash命令完成时,写入stdout的最后一行也将被推送到 XCom 。”

但是,我需要返回由终端执行的 python脚本产生的多行字符串。我想随后在 EmailOperator 中使用此字符串。

所以我的问题是:是否可以通过 xcom_push 推到最后一行?理想情况下,它会任意长。非常感谢您的帮助,谢谢!

编辑:我已经通过使用PythonOperator并调用脚本来解决了这个问题,但是我仍然很好奇是否有可能将多行数据从BashOperator推送到XCom

1 个答案:

答案 0 :(得分:0)

source code中已明确指出,如果xcom_push = True,则仅会推送BashOperator的最后行。

 :param xcom_push: If xcom_push is True, the last line written to stdout
        will also be pushed to an XCom when the bash command completes.

但是,您可以轻松地创建一个继承自BashOperator的自定义运算符,并实现双重xcom_push

有关如何使用Airflow插件构建自定义运算符的信息,请参见plugins文档。