[Python-ideas] Supporting already opened sockets in our socket-based server classes
Tarek Ziadé
tarek at ziade.org
Wed Jun 6 09:56:17 CEST 2012
Hello
What about allowing all our socket servers -- from SocketServer to
WSGIServer, to run with an existing socket.
The use case is to make it easier to write applications that use the
pre-fork model to run several processes against the same socket.
Basically:
- the main process creates a socket, binds it and listen to it
- the main process forks some subprocesses and pass them the socket fd
value
- each subprocess recreates a socket object using socket.fromfd() --
so it does not bind it
- each subprocess can accept() connection on the socket
I have a working prototype here :
https://github.com/tarekziade/chaussette/blob/master/chaussette/server.py
(don't look at the code I made it quickly just as a proof of concept)
What I am proposing is the following syntax:
if the host passed to the class is of the form:
fd://12
The class will try to create a socket object against the file descriptor
12, and will not bind() it neither accept() it.
How does that sounds ? If people like the idea I can try to build a
patch for 3.x, and I can certainly release a
backport for 2.x
Cheers
Tarek
More information about the Python-ideas
mailing list