Simple threaded web-server based on BaseHTTPServer?
Michael Ströder
michael at stroeder.com
Fri Mar 29 10:12:26 EST 2002
More information about the Python-list mailing list
Fri Mar 29 10:12:26 EST 2002
- Previous message (by thread): http://news.linuxprogramming.com
- Next message (by thread): Simple threaded web-server based on BaseHTTPServer?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Aahz wrote: > In article <3CA36D8D.1080204 at stroeder.com>, =?ISO-8859-1?Q?Michael_Str=F6der?= > <michael at stroeder.com> wrote: > >> Aahz Maruch wrote: >> >>> In article <3C5976D0.A3A63A46 at stroeder.com>, Michael >>> =?iso-8859-1?Q?Str=F6der?= <michael at stroeder.com> wrote: >>> >>>> In my case (http://web2ldap.de) I'm using threaded BaseHTTPServer but >>>> I'm not really happy with it. Especially since I have to use a module-wide >>>> lock to serialize calls into python-ldap module because the >>>> underlying OpenLDAP libs are not thread-safe. This can block the whole >>>> thing and killing threads on e.g. Linux is not possible. Having a >>>> single-process asyncore design would probably make things easier. >>> >>> Add another thread to serialize things instead of using a >>> module-wide lock. >> >> I really wonder how this helps if the call into the underlying module >> really blocks. BTW: In opposite to my original statement an asyncore >> design would also not help since the underlying OpenLDAP lib is not >> designed that way. > > > I made my suggestion in the context of assuming that your server threads > can continue to interact with the user while waiting for the LDAP call to > complete. One possible option would be to have your server's LDAP thread > call out to another LDAP server that you write to fork off processes > (that's assuming the LDAP library is concurrent across multiple processes, > of course). I apologize for not making the situation clear enough. In fact I have a web server acting as a web gateway to the LDAP server. Each HTTP request is served by a thread. If a LDAP call in one HTTP server thread blocks forever other HTTP requests resulting in a LDAP call can't progress since I have to serialize all calls into the LDAP lib which is not thread-safe with a thread lock. IMHO a separate Queue.Queue approach does not help. I already thought about having a thread lock with a timeout since I would assume that after e.g. 60 seconds the web client causing the blocking request already gave up and I would not care about the old request being served falsely. Does anybody have a code snippet for a thread lock with timeout? I also thought about forking. But I work with persistent LDAP connections and therefore IMHO need a threaded environment. Ciao, Michael.
- Previous message (by thread): http://news.linuxprogramming.com
- Next message (by thread): Simple threaded web-server based on BaseHTTPServer?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list