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

如何确保Python HTTPServer请求处理器正确写入响应?及POST服务器响应丢失问题排查

Python HTTPServer POST响应为空,但write返回正确字节数?

我在Windows 11系统上用Python 3.13.13实现了一个仅处理POST请求的HTTP服务器,代码示例如下:

from http.server import HTTPServer, BaseHTTPRequestHandler
import json

class RequestHandler(BaseHTTPRequestHandler):
    def accept_request(self):
        self.send_response(200)
        self.send_header("Content-Type", "application/json")
        self.end_headers()

    def fetch_content(self):
        return json.loads(self.rfile.read(int(self.headers.get("Content-Length"))))

    def do_POST(self):
        if self.path.endswith("/whatever/endpoint"):
            # 获取请求体数据
            body_data = self.fetch_content()
            # 确认请求
            self.accept_request()
            # 处理接收的数据
            # blablablabla....
            # 生成JSON响应字符串
            my_json_data_str = "{\"Key1\":\"value1\",\"key2\":\"value2\"}"
            # 回复
            self.wfile.write(my_json_data_str.encode()) # <=== 此处为问题点
if __name__ == "__main__":
    http_server = HTTPServer(('', 8080), RequestHandler)
    http_server.serve_forever()

现在遇到了一个棘手的问题:客户端接收的响应为空。我尝试打印self.wfile.write()的返回值,它和预期发送的字节数完全一致,所以我认为数据应该已经实际发送出去了。我还试过在调用write之后执行self.wfile.flush(),但问题依旧没有解决。

另外,同一客户端访问同一机器(同一HTTP端口)上的另一个C++编写的服务器程序时,能正常接收响应,所以可以排除客户端自身的问题。

想请教一下:

  • 为什么这个Python HTTP服务器的数据会在到达客户端前丢失?
  • 如何确保HTTPServer的请求处理器确实写入了响应?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 10:52:29