操作错误 [WinError 10061] 无法建立连接,因为目标主机主动拒绝了连接

后端开发 2026-07-08

我正在尝试在Django中通过Redis向新注册的用户发送消息。

我曾经有一个实现类似功能的项目,运行是正常的。

在我当前的项目中,我遇到了这个错误 "OperationalError [WinError 10061] No connection could be made because the target machine actively refused it."

我注意到在那个类似的项目中,VS Code显示Celery实例的方法(config_from_object和 autodiscover_tasks)的文本是彩色的,而在新项目里它们不是彩色的,只有简单文本。我以为这可能是问题所在,检查了解释器,发现它并非在.venv文件夹里的那个版本,于是把它改成了.venv里的解释器。

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

这些方法的文本变得彩色了,但这并没有解决任何问题。

我有Docker、Django服务器和Celery正在运行。

我在使用包含Redis的 Docker,在创建容器时对端口进行了转发。

容器正在运行。

settings.py中的主机被设为127.0.0.1

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()

我还执行了这些命令:
Test-NetConnection -ComputerName 127.0.0.1 -Port 6379
docker ps --format "table {{.Names}}\t{{.Ports}}\t{{.Status}}"

1.

ComputerName : 127.0.0.1

RemoteAddress : 127.0.0.1

RemotePort : 6379

InterfaceAlias : Loopback Pseudo-Interface 1

SourceAddress : 127.0.0.1

TcpTestSucceeded : True

2.

docker ps --format "table {{.Names}} \t{{.Ports}} \t{{.Status}}"

NAMES PORTS STATUS

my-redis 0.0.0.0:6379->6379/tcp Up 5 hours

没有任何帮助。还有可能是什么问题?

提前感谢大家的解答

解决方案

我觉得你应该使用 CELERY_BROKER_URL 而不是 BROKER_URL,就像 CELERY_RESULT_BACKENDCELERY_ 为前缀一样。你的Docker容器听起来没问题,我认为你的应用其实并没有真正连接到它。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章