python-3.x - 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 的加载函数的连接有关。
这花了几个小时,我找不到具体的解决方案,所以我会在下面发布一个答案。随意加入其他答案
解决方案
通过多线程服务器/处理程序,我已经能够处理至少一个用户。这可能仍然是吞吐量问题,但现在已经足够了:
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 //没有效果
希望这可以拯救某人!
推荐阅读
- sql - SQL 逻辑需要帮助可能的子查询
- gcc - 我可以强制 gcc 以固定顺序发出 ra/fp 处理吗?
- outlook - OfficeRuntime.auth.getAccessToken 在最近更新后挂起
- node.js - Node.js 中的 fluent-ffmpeg 在文件开头添加了 50 毫秒的静音
- reactjs - 呈现表单后,所有 React 事件都停止触发
- python - 将 pyplot 传递给 Canvas
- javascript - 基于数组中子文档查询存在的MongoDB条件投影
- python - C# 和 Python 中的 JPEG 压缩差异
- spring-boot - 将 Springfox 3.0.0 添加到 SpringBoot 后抛出“检测到不明确的搜索映射”
- smooch - 如何通过 node.js 检查用户 id 或对话 id 或用户 alreadt 是否存在于阳光中