13

有没有办法让BaseHTTPServer.HTTPServer像SocketServer.ThreadingTCPServer一样是多线程的?Python - BaseHTTPServer.HTTPServer并发和线程

+0

有没有你需要它的原因? – jakebman 2010-03-07 22:29:44

+3

因为我想要一个可以处理并发的基本Web服务器吗?我也不需要/需要像web.py,cherrypy或类似的全部框架,我只想要一个像BaseHTTPServer这样的基本webserver,它可以处理多个并发请求。 – Ian 2010-03-07 22:32:52

+1

这里是一个参考:[链接](http://www.doughellmann.com/PyMOTW/BaseHTTPServer/index.html#module-BaseHTTPServer),线程,分叉 – sfossen 2010-04-08 17:52:56

回答

19

您可以简单地使用线程混入使用这两个类,使其多线程:)

它不会帮助你很多在性能上,虽然,但它的多线程ATLEAST。

from SocketServer import ThreadingMixIn 
from BaseHTTPServer import HTTPServer 

class MultiThreadedHTTPServer(ThreadingMixIn, HTTPServer): 
    pass 
+2

这看起来像* a *解决方案..但是,我宁愿选择编写自己的服务器,而不是使用缓慢的东西.. :( – Ian 2010-03-08 18:49:23

+0

如果您只是在寻找托管Python而不是为什么不使用像nginx这样的现有http服务器, apache或lighttpd? 至于性能,线程它将允许你做多个并发连接而不被阻塞,所以在多个同时请求的情况下它会更快,但它仍然只使用一个处理器。 – Wolph 2010-03-09 00:16:15

+1

我不是寻找,我正在做一个队列服务器,接受传入的请求(HTTP或一些类似的格式),并根据请求做一个动作 – Ian 2010-03-09 04:09:27