Python - BaseHTTPServer.HTTPServer 并发和线程化

13
有没有一种方法可以使BaseHTTPServer.HTTPServer像SocketServer.ThreadingTCPServer一样支持多线程?

你需要它成为这样的原因是什么? - jakebman
3
因为我需要一个基本的Web服务器来处理并发请求,我不需要/也不想要像web.py、cherrypy或其他框架那样的全面框架,我只需要一个像BaseHTTPServer一样的非常基本的Web服务器,能够处理多个并发请求。 - Ian
使用Apache和mod_wsgi。 - user297524
1
这里有一个参考链接:link,线程,分叉。 - sfossen
1个回答

19

你可以简单地使用线程混合类(threading mixin),同时使用这两个类来使其变成多线程:)

然而,这对于性能的提升帮助不大,但至少支持了多线程。

from SocketServer import ThreadingMixIn
from BaseHTTPServer import HTTPServer

class MultiThreadedHTTPServer(ThreadingMixIn, HTTPServer):
    pass

2
这似乎是一个解决方案.. 但我宁愿选择编写自己的服务器,而不是使用一些慢的东西.. :( - Ian
如果你只是想托管Python,为什么不使用现有的http服务器,比如nginx、apache或lighttpd呢?至于性能方面,线程化将允许您进行多个并发连接而不会阻塞,因此在多个同时请求的情况下,它将更快。但它仍然只使用1个处理器。 - Wolph
1
我不是在寻找那个,我正在制作一个队列服务器,它接收传入的请求(http或类似格式),并根据请求执行操作。 - Ian
这是一个参考链接:link,线程,分叉。 - sfossen
@Ian:既然你正在制作一个队列服务器,你可能想尝试一些其他技术。看看Eventlet库:http://wiki.secondlife.com/wiki/Eventlet - Wolph
1
对于快速 POC 实现,这是允许多个连接不互相干扰通信缓冲区的好方法。感谢分享。 - Buzz Moschetti

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接