繁体   English   中英

如何在 BashOperator 执行的 python 脚本文件中使用 Xcom

[英]How to use Xcom within python script file executed by BashOperator

我正在使用 Bash 运算符执行 python 脚本文件,如下所示:

op = BashOperator(task_id='python',
                  bash_command='python3 py_script.py')

在 python 文件中,如果在循环中满足条件,我想向 xcom 发送一个值,例如:

for i in range(10):
    if i == 2:
        print(i)
        xcom_push('hello')

由于它处于循环中,并且我希望它在达到 2 后继续,所以我不能使用return 我尝试过:

from airflow.models import XCom

context['ti'].xcom_push('hello')
kwargs['ti'].xcom_push('hello')

但在这两种情况下,我都会收到类似NameError: name 'kwargs' is not defined的错误

解决方案是什么? 谢谢

如果您在BashOperator中设置xcom_push=True ,则 bash 命令写入标准输出的最后一行将被推送到 XCom( 文档)。

因此,如果在您的py_script.py中的print(i)之后没有打印其他行,则i的字符串表示将被推送到 XCom 以执行pythonk任务。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM