You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Airflow中通过XCom或其他方式捕获SSHOperator的输出到变量

Airflow SSHOperator捕获命令输出到XCom的解决方案
  • SSHOperator默认的xcom_push=True(Airflow 2.x版本改为do_xcom_push=True)可能无法直接捕获输出,核心原因是需要确保SSH钩子正确返回命令的标准输出。
  • 调整任务配置,明确开启XCom推送,并确保命令输出到标准输出:
task_id = SSHOperator(
    task_id="task_id",
    ssh_conn_id="CONNECTION_ID",
    command='echo "Failed"',
    do_xcom_push=True  # Airflow 2.x用此参数,旧版本替换为xcom_push=True
)
  • 下游任务中通过XCom拉取该值,示例用PythonOperator实现:
def get_output(**context):
    variablea = context['ti'].xcom_pull(task_ids='task_id')
    # 此时variablea的值即为"Failed"
    print(variablea)

pull_output_task = PythonOperator(
    task_id='pull_output_task',
    python_callable=get_output,
    provide_context=True,
)
  • 排查要点:
    • 确认SSH连接配置正常,命令在目标服务器上能正常输出内容;
    • 若使用Airflow 1.x版本,将参数改为xcom_push=True;
    • 确保命令没有将输出重定向到标准错误或其他文件,只输出到stdout。

内容的提问来源于stack exchange,提问作者Arya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 00:41:13