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

Python multiprocessing BaseManager本地正常远程连接报EOFError

问题原因

跨主机连接抛出EOFError、同机访问正常的核心原因是服务端BaseManager的监听地址配置错误:

  • 服务端代码中绑定的127.0.0.1是本地回环地址,仅允许本机进程访问,发往该地址的流量不会经过物理网卡,外部主机的连接请求无法送达Manager进程。
  • 跨主机访问时,TCP连接会被操作系统直接重置,客户端在认证握手阶段等待服务端返回挑战消息时读不到任何数据,就会触发EOFError,和认证密钥配置无关。
修复方案
  • 调整服务端监听地址:将初始化Manager时的绑定地址从127.0.0.1改为0.0.0.0,监听所有网卡的60000端口,允许外部主机发起连接;如果有访问范围限制需求,也可以直接绑定服务端对外提供服务的指定内网/公网IP。
    修改后的服务端核心代码如下:
from multiprocessing.managers import BaseManager
password = "password".encode("utf-8")

class MyManager(BaseManager):
    pass

a = {'one': 1}  # 待对外暴露的共享对象
MyManager.register("get_a", callable=lambda: a)
m = MyManager(address=("0.0.0.0", 60000), authkey=password)
m.start()
# ... 长驻运行逻辑 ...
  • 排查网络链路:确认服务端主机的本地防火墙、云平台安全组规则已经放行了60000端口的TCP入站流量,同时核对客户端代码中填写的SERVER_IP是服务端实际对外可达的IP,无地址填写错误。

调试时可以先在客户端执行telnet SERVER_IP 60000验证端口连通性,TCP链路通了之后再运行客户端代码,能减少不必要的排错成本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 08:33:21