RabbitMQ连接Celery报错[WinError 10061]原因及解决咨询
RabbitMQ与Celery连接报错[WinError 10061]的原因及解决办法
报错详情
ERROR/MainProcess] consumer: Cannot connect to amqp://local:**@127.0.0.1:5672//: [WinError 10061] No connection could be made because the target machine actively refused it. Trying again in 32.00 seconds... (16/100) [2024-01-06 14:32:06,347: CRITICAL/MainProcess] Unrecoverable error: OperationalError('[WinError 10061] No connection could be made because the target machine actively refused it') Traceback (most recent call last): File "D:\venvs\mlops_backend_venv\lib\site-packages\kombu\connection.py", line 472, in _reraise_as_library_errors yield File "D:\venvs\mlops_backend_venv\lib\site-packages\kombu\connection.py", line 459, in _ensure_connection return retry_over_time( File "D:\venvs\mlops_backend_venv\lib\site-packages\kombu\utils\functional.py", line 318, in retry_over_time return fun(*args, **kwargs) File "D:\venvs\mlops_backend_venv\lib\site-packages\kombu\connection.py", line 934, in _connection_factory self._connection = self._establish_connection() File "D:\venvs\mlops_backend_venv\lib\site-packages\kombu\connection.py", line 860, in _establish_connection conn = self.transport.establish_connection() File "D:\venvs\mlops_backend_venv\lib\site-packages\kombu\transport\pyamqp.py", line 203, in establish_connection conn.connect() File "D:\venvs\mlops_backend_venv\lib\site-packages\amqp\connection.py", line 324, in connect self.transport.connect() File "D:\venvs\mlops_backend_venv\lib\site-packages\amqp\transport.py", line 129, in connect self._connect(self.host, self.port, self.connect_timeout) File "D:\venvs\mlops_backend_venv\lib\site-packages\amqp\transport.py", line 184, in _connect self.sock.connect(sa) ConnectionRefusedError: [WinError 10061] No connection could be made because the target machine actively refused it The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\venvs\mlops_backend_venv\lib\site-packages\celery\worker\worker.py", line 202, in start self.blueprint.start(self) File "D:\venvs\mlops_backend_venv\lib\site-packages\celery\bootsteps.py", line 116, in start step.start(parent) File "D:\venvs\mlops_backend_venv\lib\site-packages\celery\bootsteps.py", line 365, in start return self.obj.start() File "D:\venvs\mlops_backend_venv\lib\site-packages\celery\worker\consumer\consumer.py", line 340, in start blueprint.start(self) File "D:\venvs\mlops_backend_venv\lib\site-packages\celery\bootsteps.py", line 116, in start
错误本质
这个错误是TCP连接被主动拒绝,说明Celery无法和指定地址(127.0.0.1:5672)的RabbitMQ服务建立基础网络连接,和交换机、队列的创建权限无关,核心问题出在连接层面。
可能原因及解决办法
1. RabbitMQ核心服务未正常启动
- 操作:打开Windows服务管理器(运行
services.msc),找到RabbitMQ Service,确认状态为「正在运行」。 - 若未运行:手动启动服务,若启动失败,查看事件查看器->Windows日志->应用程序中的RabbitMQ报错,排查启动失败原因(比如依赖的Erlang环境异常)。
2. 5672端口未被RabbitMQ监听
- 验证端口:打开命令提示符,执行
netstat -ano | findstr :5672。- 无输出:说明RabbitMQ未监听该端口。检查RabbitMQ配置文件(默认路径
C:\Users\<你的用户名>\AppData\Roaming\RabbitMQ\rabbitmq.conf),确认存在listeners.tcp.default = 5672配置,若没有则添加后重启服务。 - 有输出:查看PID对应的进程是否为RabbitMQ,若为其他进程,结束该进程后重启RabbitMQ。
- 无输出:说明RabbitMQ未监听该端口。检查RabbitMQ配置文件(默认路径
3. 防火墙/安全软件拦截连接
- 操作:临时关闭Windows防火墙(控制面板->Windows Defender防火墙->启用或关闭Windows Defender防火墙),或添加RabbitMQ和Python进程的入站/出站允许规则;同时关闭第三方杀毒软件,再启动Celery测试连接。
4. 连接URL存在隐藏错误
- 检查格式:确保连接URL为
amqp://用户名:密码@127.0.0.1:5672/虚拟主机,默认虚拟主机是/,不要遗漏。 - 转义特殊字符:若密码包含
@、#、&等特殊字符,需进行URL转义,比如@转成%40,#转成%23。
5. 重置RabbitMQ环境
若以上方法无效,彻底重置RabbitMQ:
- 停止服务:
rabbitmq-service stop - 重置数据:
rabbitmqctl reset - 启用管理插件:
rabbitmq-plugins enable rabbitmq_management - 启动服务:
rabbitmq-service start - 重建用户及权限:
rabbitmqctl add_user local 你的密码 rabbitmqctl set_permissions -p / local ".*" ".*" ".*"
内容的提问来源于stack exchange,提问作者Malla Raraju
相关产品推荐
相关产品推荐

