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

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。

3. 防火墙/安全软件拦截连接

  • 操作:临时关闭Windows防火墙(控制面板->Windows Defender防火墙->启用或关闭Windows Defender防火墙),或添加RabbitMQ和Python进程的入站/出站允许规则;同时关闭第三方杀毒软件,再启动Celery测试连接。

4. 连接URL存在隐藏错误

  • 检查格式:确保连接URL为amqp://用户名:密码@127.0.0.1:5672/虚拟主机,默认虚拟主机是/,不要遗漏。
  • 转义特殊字符:若密码包含@、#、&等特殊字符,需进行URL转义,比如@转成%40,#转成%23。

5. 重置RabbitMQ环境

若以上方法无效,彻底重置RabbitMQ:

  1. 停止服务:rabbitmq-service stop
  2. 重置数据:rabbitmqctl reset
  3. 启用管理插件:rabbitmq-plugins enable rabbitmq_management
  4. 启动服务:rabbitmq-service start
  5. 重建用户及权限:
    rabbitmqctl add_user local 你的密码
    rabbitmqctl set_permissions -p / local ".*" ".*" ".*"
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 14:15:18