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

集成Celery时Redis报错:Connection.__init__()收到意外参数'username'

解决Celery连接Redis时的TypeError: Connection.init() got an unexpected keyword argument 'username'

解决方案

1. 升级redis-py版本

执行以下命令升级到支持username参数的redis-py版本:

pip install --upgrade redis>=3.5.0

redis-py从3.5.0版本开始,Connection类新增了username参数支持,可兼容Kombu自动传递的参数(即使你未配置用户名,Kombu也会默认传None)。

2. 降级Kombu版本(适配旧版redis)

若无法升级redis,可降级Kombu到不会自动传递username参数的版本:

pip install kombu<5.2.0

Celery 5.1.x配合过高版本的Kombu时,会引入username参数传递逻辑,降级后可避免该问题。

3. 显式指定空用户名(可选)

修改Celery配置中的Redis URL,显式添加空用户名:

CELERY_BROKER_URL = "redis://:@0.0.0.0:6379"
CELERY_RESULT_BACKEND = "redis://:@0.0.0.0:6379"

部分Kombu版本会识别到空用户名,不再额外传递username参数。

问题根源

你未配置Redis用户名,但Celery依赖的Kombu库在处理Redis连接时,会自动向redis-py的Connection类传递username参数(默认值为None)。而你当前环境的redis-py版本低于3.5.0,该版本的Connection类并未实现username初始化参数,因此触发TypeError。

从错误栈可见,错误发生在redis/connection.py的make_connection方法中,代码尝试传递username参数给Connection构造函数,但旧版本不支持该参数。

验证当前redis版本

可执行以下命令确认redis-py版本:

pip show redis

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 13:10:31