首页 > 解决方案 > 气流 BashOperator 在 Python 脚本之间传递参数

问题描述

为了在使用 Apache Airflow 计划时在 virtualenv 中运行 Python 脚本,BashOperator使用了。

例如,

task_a = BashOperator(
    task_id='task_a',
    bash_command='/path/to/virtualenv/bin/python /path/to/script_a.py'),
    dag=dag)

task_b = BashOperator(
    task_id='task_b',
    bash_command='/path/to/virtualenv/bin/python /path/to/script_b.py'),
    dag=dag)

task_a在这种情况下,我们如何在和之间传递数据task_b,就像在使用 Xcom 时PythonOperator使用的那样?

标签: pythonanacondaairflow

解决方案


{{ ti.xcom_pull(task_ids='task_a') }}作为参数传递给你的脚本task_b。记住只有输出的最后一行BashOperator被推送到 Xcom。

task_a = BashOperator(
    task_id='task_a',
    bash_command='/path/to/virtualenv/bin/python /path/to/script_a.py'),
    dag=dag)

task_b = BashOperator(
    task_id='task_b',
    bash_command="/path/to/virtualenv/bin/python /path/to/script_b.py {{ ti.xcom_pull(task_ids='task_a') }}"),
    dag=dag)

推荐阅读