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

Django中用Redis+Celery报错[WinError10061],求排查方向

问题排查:Django+Celery+Redis连接报错WinError 10061

问题描述

在Django项目中使用Redis配合Celery给新注册用户发送消息时,出现报错:

OperationalError [WinError 10061] No connection could be made because the target machine actively refused it

已完成以下排查但问题未解决:

  • 更换VS Code解释器为项目.venv环境,Celery方法语法高亮恢复,但报错依旧
  • 已启动Docker、Django服务器、Celery服务
  • Redis通过Docker部署,端口映射0.0.0.0:6379->6379/tcp,容器处于运行状态
  • settings.py中REDIS_HOST设为127.0.0.1
  • 执行Test-NetConnection -ComputerName 127.0.0.1 -Port 6379,结果显示TcpTestSucceeded : True

项目配置

settings.py 相关配置

EMAIL_HOST = "smtp.gmail.com"
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = "<email>"
EMAIL_HOST_PASSWORD = "<password>"

REDIS_HOST = "127.0.0.1"
REDIS_PORT = "6379"
BROKER_URL = "redis://" + REDIS_HOST + ":" + REDIS_PORT + "/0"
BROKER_TRANSPORT_OPTIONS = {"visibility_timeout": 3600}
CELERY_RESULT_BACKEND = "redis://" + REDIS_HOST + ":" + REDIS_PORT + "/0"

celery.py 配置

import os

from celery import Celery

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "shop.settings")

app = Celery("shop", 
             broker_connection_retry=False,
             broker_connection_retry_on_startup=True)

app.config_from_object("django.conf:settings")
app.autodiscover_tasks()

其他可能的排查方向

  • Celery版本兼容性问题:检查当前项目Celery版本与旧项目是否一致,不同版本的配置参数可能存在隐性差异。新版本推荐使用小写配置项,可尝试修改配置:
    broker_url = "redis://127.0.0.1:6379/0"
    result_backend = "redis://127.0.0.1:6379/0"
    
  • Redis绑定地址配置:进入Redis容器执行redis-cli CONFIG GET bind,确认返回值为0.0.0.0。若仅绑定容器内部127.0.0.1,即使做了端口映射,外部也无法正常访问,需修改Redis启动命令添加--bind 0.0.0.0或调整配置文件。
  • Celery启动环境校验:确保在项目.venv虚拟环境中执行Celery启动命令,且指定了正确的项目模块:
    celery -A shop worker --loglevel=info
    
  • Redis密码验证遗漏:如果Redis设置了访问密码,需在Broker URL中添加密码信息,格式为redis://:password@127.0.0.1:6379/0。
  • Windows安全软件拦截:临时关闭Windows防火墙或第三方杀毒软件,排查是否存在连接拦截情况。
  • Celery配置加载完整性:确认celery.py放在项目根目录(与manage.py同级),并在项目目录的__init__.py中添加以下代码确保配置被正确加载:
    from .celery import app as celery_app
    
    __all__ = ('celery_app',)
    
  • Redis数据库冲突:尝试更换Redis数据库编号(比如将URL中的/0改为/1),排查是否有其他进程占用目标数据库。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.09 14:04:49