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

运行Python HTTP服务端/客户端代码遇Bad file descriptor [Errno 9]错误求助

解决Python HTTP服务端/客户端Errno 9(Bad file descriptor)问题

我之前运行一段Python写的HTTP服务端和客户端代码一切正常,但现在突然碰到了Errno 9: Bad file descriptor错误。这段代码原本要实现的是创建携带文件数据的HTTP请求,客户端访问127.0.0.1:8000时应该能正常获取数据并执行。

服务端代码片段如下:

""" Developer: Roei Edri File Name: httpServer.py Exercise: 4.4 Date: 5.3.2018 """
import socket
import os.path
IP = '127.0.0.1'
PORT = 8000
ROOT_PATH = "C:" + os.path.sep + ...

可能的原因及排查方向

  • 重复使用已关闭的套接字:这是Errno 9最常见的诱因。你得检查代码里是不是在调用socket.close()之后,又不小心复用了这个已经失效的套接字对象做读写操作——比如服务端处理完请求关闭了socket,但后续逻辑又误用到它。
  • 文件描述符泄漏或被占用:有时候系统资源不足,或者其他进程意外占用了服务端端口对应的文件描述符。可以先重启所有相关Python进程,或者临时把PORT改成8001之类的其他端口测试看看。
  • 异常处理缺失导致的资源未清理:如果之前的请求处理过程中抛出了异常,可能会让套接字没被正确关闭,后续流程就会错误地使用无效的文件描述符。检查你的异常处理逻辑,确保出错时也能稳妥清理套接字资源。
  • Windows路径/权限问题:你的代码里ROOT_PATH用了C盘路径,Windows下文件路径处理不当或者权限不足,也可能间接引发这个错误。比如服务端要读取的文件不存在、没有访问权限,导致文件描述符无效,进而触发套接字层面的报错。

快速测试建议

  1. 彻底关闭所有相关Python进程,重新启动服务端和客户端,排除进程残留的影响。
  2. 先简化代码,写一个最基础的HTTP服务端(比如只返回固定字符串),确认是不是文件处理部分的逻辑出了问题。
  3. 检查ROOT_PATH对应的目录是否存在,服务端有没有访问该目录下文件的权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:23:42