首页 > 解决方案 > Python HTTPServer [WinError 10053] 请求过多时?

问题描述

运行一个超级简单的网络服务器,在大多数情况下,只需要从来自 3rd 方脚本的请求中删除查询信息并返回一些文件:

def run(server_class=HTTPServer, handler_class=MyHandler, port=xxx):
server_address = ('', port)
httpd = server_class(server_address, handler_class)
print ('Starting httpd...')
httpd.serve_forever()

服务器必须返回的一个对象是一个 HTML 页面,该页面然后加载一些 javascript,然后加载three.js,然后继续从同一服务器加载大量对象。

哪个有效,但是在重新加载 1-5 次后,通常会导致WinError[10053]服务器锁定!之后,连接将被拒绝或超时。不确定这是由于请求过多,还是与 Three.js 的加载函数的连接有关。

这花了几个小时,我找不到具体的解决方案,所以我会在下面发布一个答案。随意加入其他答案

标签: python-3.xthree.jshttpserver

解决方案


通过多线程服务器/处理程序,我已经能够处理至少一个用户。这可能仍然是吞吐量问题,但现在已经足够了:

class ThreadingHTTPServer(socketserver.ThreadingMixIn, HTTPServer):
    pass

def run(server_class=ThreadingHTTPServer, handler_class=MyHandler, port=xxx):
    server_address = ('', port)
    httpd = server_class(server_address, handler_class)
    print ('Starting httpd...')
    httpd.serve_forever()

我尝试/失败的其他一些事情:

  • 编辑 self.path 并调用 SimpleHTTPRequestHandler.do_GET(self) //无法更改路径以影响简单处理程序
  • allow_reuse_address= True/False // 没有效果
  • 手动设置close_connection= True //没有效果
  • some header play //没有效果

希望这可以拯救某人!


推荐阅读