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

Airflow 2.9.0中Python Operator报op_kwargs参数重复TypeError

问题分析与解决

错误原因

你遇到的TypeError: got multiple values for keyword argument 'op_kwargs',核心原因是在DAG上下文管理器内部定义任务时,给@task.sensor装饰器额外传递了dag=dag参数。

在Airflow中,当你处于with DAG(...) as dag:的代码块内时,所有通过装饰器定义的任务会自动关联到当前DAG,无需显式指定dag=dag。而Airflow 2.9.0的装饰器内部逻辑会把你显式传递的dag参数错误地合并到op_kwargs中,导致Operator初始化时收到重复的op_kwargs参数。

修复步骤

直接删除@task.sensor装饰器中的dag=dag参数即可,修改后的代码如下:

@task.sensor(
    task_id='some_task_op',
    mode='reschedule',  # default is 'poke'
    poke_interval=10*60,
    timeout=4*60*60,
    op_kwargs={
        'creds': '{{ var.value.get("api-credentials") }}',
    },
)
def some_task_op(params, data_interval_end, creds=None):
    pass

额外说明

  • 函数参数params和data_interval_end是Airflow自动注入的上下文变量,不需要在op_kwargs中手动传递,当前写法没问题。
  • 只有在DAG上下文外部需要关联任务到指定DAG时,才需要显式传递dag=dag,这种场景极少。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 12:43:23