Я не могу xcom_push аргументы через BashOperator - PullRequest
0 голосов
/ 11 февраля 2019

Я новичок в xcom функции Airflow.я попробовал это с PythonOperator, и он работал нормально (то есть я могу выдвинуть и извлечь значение из контекста), но когда я попробовал это на BashOperator, это не сработало.Однако я могу получить только последний оператор stdout, добавив атрибут xcom_push = True во время создания задачи.это одна вещь.2) Но я также хотел бы выдвигать и извлекать значения, основанные на их ключах (в BashOp и обратно), как мы это делаем в PythonOp. Это было бы очень полезно, так как мне нужно передать тонны переменных из одного скрипта вдругой.

1 Ответ

0 голосов
/ 12 февраля 2019

Это то, что вы хотите?

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
...