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

Airflow 2.0.2 DAG模板渲染异常 BashOperator无法正确读取XCom推送值

问题根因
  • Airflow的Operator仅会对预先声明的template_fields字段做Jinja模板渲染。BashOperator默认的模板渲染字段只有bash_command和env,你写在params里的Jinja语句不会被解析,只会被当作普通字符串处理,遍历该字符串时自然会逐字符拆分输出,触发bash语法错误。
  • 你编写的xcom_pull语法存在错误,key参数被放到了xcom_pull的括号外部,正确写法为ti.xcom_pull(task_ids='get_query_id', key='return_value')。
修复方案

直接将XCom拉取逻辑写到bash_command的Jinja模板中即可,不需要通过params传递参数,修改后的相关代码如下:

templated_command = dedent(
    """
{% set query_ids = ti.xcom_pull(task_ids='get_query_id', key='return_value') %}
{% for item in query_ids %}
    echo {{ item[0] }};
{% endfor %}
"""
)

t2 = BashOperator(
    task_id='templated',
    depends_on_past=False,
    bash_command=templated_command,
)

如果确实需要通过params传递参数,可以自定义BashOperator,将params加入模板渲染字段:

class TemplatedParamsBashOperator(BashOperator):
    template_fields = (*BashOperator.template_fields, 'params')

# 后续使用该自定义算子定义t2即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 01:45:06