Python - BaseHTTPServer.HTTPServer Concurrency & Threading
Asked Answered
R

1

13

Is there a way to make BaseHTTPServer.HTTPServer be multi-threaded like SocketServer.ThreadingTCPServer?

Recollection answered 7/3, 2010 at 21:56 Comment(4)
Is there a reason why you need it to be?Melodrama
Because I want a basic web server that can handle concurrency? I also don't need/want an all out framework like web.py, cherrypy or anything like that, I just want a really basic webserver like BaseHTTPServer that can handle multiple concurrent requests.Recollection
Use Apache and mod_wsgi.Candlefish
here is a reference: link, threading, forkingIncandesce
C
19

You can simply use the threading mixin using both of those classes to make it multithread :)

It won't help you much in performance though, but it's atleast multithreaded.

from SocketServer import ThreadingMixIn
from BaseHTTPServer import HTTPServer

class MultiThreadedHTTPServer(ThreadingMixIn, HTTPServer):
    pass
Councilwoman answered 7/3, 2010 at 22:36 Comment(6)
This looks like a solution.. however I'd rather opt to write my own server than use something slow.. :(Recollection
If you're simply looking for hosting Python than why not use an existing http server like nginx, apache or lighttpd? As for the performance, threading it will allow you to make multiple concurrent connections without blocking so in the case of multiple simultaneous requests it will be faster. But it will still use only 1 processor.Councilwoman
I'm not looking for that, I'm making a Queue server that takes incoming requests (http or some similar format) and does an action based on the request.Recollection
here is a reference: link, threading, forkingIncandesce
@Ian: since you're making a queue server you might want to try some other technology. Take a look at the eventlet library: wiki.secondlife.com/wiki/EventletCouncilwoman
For quicky POC imps, this is a great way to allow multiple connections to not step on each other's comm buffers. Thanks for sharing.Incunabula

© 2022 - 2024 — McMap. All rights reserved.