I was trying to make an http proxy using BaseHttpServer which is based on SocketServer which got 2 asynchronous Mixins (ThreadingMixIn and ForkingMixIn)
the problem with those two that they work on each request (allocate a new thread or fork a new subprocess for each request)
is there a Mixin that utilize a pool of let's say 4 subprocesses and 40 threads in each so requests get handled by those already created threads ?
because this would be a big performance gain and I guess it would save some resources.
I've started a project that solves this issue
https://github.com/muayyad-alsadi/python-PooledProcessMixIn
maybe you want to join me finish the TODOs (clean up after CTRL+C)
You could use a pool from
concurrent.futures
(in stdlib since Python 3.2):As you can see the implementation for a threading case is rather trivial.
If you save it to
server.py
then you could run it as:This command uses upto 40 threads to serve requests on
http://your_host:8000/
.The main use case of
HTTPServer
is for testing purposes.