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

Airflow 1.x中TriggerDagRunOperator传递{{ds}}为conf参数未渲染怎么解决

问题根因
  • Airflow 1.x 中,TriggerDagRunOperator 的 python_callable 内部的普通字符串不属于Operator的默认模板渲染字段范围,你写的"{{ds}}"不会被自动解析为实际日期,只会作为字面量传递给下游DAG。
解决方案

直接从fn_day函数的context参数中获取已经渲染完成的日期值,无需使用模板字符串。

修改后的DAG1代码:

from airflow.operators import TriggerDagRunOperator

def fn_day(context, dagrun_order):
    # 直接从上下文取渲染好的ds值,不需要写模板语法
    dagrun_order.payload = {"day": context['ds']}
    return dagrun_order

trig = TriggerDagRunOperator(
        trigger_dag_id="ssh",
        task_id='trig',
        python_callable=fn_day,
        provide_context=True, # 必须配置该参数,确保上下文信息能正常传入函数
        dag=dag)
补充说明

你当前DAG2的写法无需修改,SSHOperator的command字段默认支持Jinja模板渲染,{{dag_run.conf['day']}}可以正常读取到DAG1传递的实际日期值。如果需要传递其他Airflow内置模板变量(比如{{ prev_ds }}、{{ execution_date }}等),都可以直接从context字典中取对应键的实际值,不需要在payload中写模板字符串。

内容的提问来源于stack exchange,提问作者d-_-b

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 12:15:03