Spa*_*Bot 1 airflow apache-airflow-xcom
我是 Airflow 的 xcom 功能的新手。我用 PythonOperator 进行了尝试,它工作正常(即,我可以将值从上下文中推入和拉出),但是当我在 BashOperator 上尝试时,它不起作用。但是,我只能通过在任务创建期间添加 xcom_push=True 属性来提取最终的 stdout 语句。这是一回事。2)但我也希望像我们在 PythonOp 中那样根据它们的键(到 BashOp 和从 BashOp)推送和拉取值。这真的很有帮助,因为我需要将大量变量从一个脚本传递到其他。
Rya*_*uan 11
这是你想要的吗?
from datetime import datetime
from airflow.models import DAG
from airflow.operators.bash_operator import BashOperator
dag = DAG(
dag_id="example_bash_operator_1",
schedule_interval=None,
start_date=datetime(2018, 12, 31),
)
t1 = BashOperator(
task_id="t1",
bash_command='echo "{{ ti.xcom_push(key="k1", value="v1") }}" "{{ti.xcom_push(key="k2", value="v2") }}"',
dag=dag,
)
t2 = BashOperator(
task_id="t2",
bash_command='echo "{{ ti.xcom_pull(key="k1") }}" "{{ ti.xcom_pull(key="k2") }}"',
dag=dag,
)
t1 >> t2
Run Code Online (Sandbox Code Playgroud)