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