【问题标题】:Can python -m http.server be configured to handle concurrent requests?可以将 python -m http.server 配置为处理并发请求吗?
【发布时间】:2018-01-17 19:21:02
【问题描述】:
【问题讨论】:
标签:
python
http
httpserver
simplehttpserver
【解决方案1】:
IIRC 没有现有的配置选项,但如果您愿意,可以使用 socketserver.ThreadingMixin 扩展一个:
import sys
import socketserver
import http.server
class ThreadedHTTPServer(socketserver.ThreadingMixIn, http.server.HTTPServer):
daemon_threads = True
port = int(sys.argv[1])
server = ThreadedHTTPServer(('', port), http.server.SimpleHTTPRequestHandler)
try:
server.serve_forever()
except KeyboardInterrupt:
pass
ps:有a related python ticket。
【解决方案2】:
您现在可以使用ThreadingHTTPServer
类 http.server.ThreadingHTTPServer(server_address, RequestHandlerClass)
此类与 HTTPServer 相同,但使用线程通过 ThreadingMixIn 处理请求。这对于处理 Web 浏览器预打开套接字很有用,HTTPServer 会无限期地等待。
3.7 版中的新功能。