bra*_*ump 4 python concurrency simplehttpserver
我正在编写一个小型Web服务器,用于使用python,BasicHTTPServer和SimpleHTTPServer进行测试.它看起来像是一次处理一个请求.有没有什么方法可以让它更快一点而不会太深入?基本上我的代码如下所示,我想保持这个简单;)
os.chdir(webroot)
httpd = BaseHTTPServer.HTTPServer(("", port), SimpleHTTPServer.SimpleHTTPRequestHandler)
print("Serving directory %s on port %i" %(webroot, port) )
try:
httpd.serve_forever()
except KeyboardInterrupt:
print("Server stopped.")
Run Code Online (Sandbox Code Playgroud)
您可以使用SocketServer的mixin继承创建自己的线程或分叉类:
import SocketServer
import BaseHTTPServer
class ThreadingHTTPServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer):
pass
Run Code Online (Sandbox Code Playgroud)
这有其局限性,因为它不使用线程池,受GIT限制等,但它可以帮助一点(相对较少的努力).请记住,请求将由多个线程同时提供,因此请确保在提供请求的过程中对全局/共享数据的访问进行适当的锁定(除非此类数据在启动后不可变).
这个SO问题涉及相同的理由(不是特别详细).