Graham Dumpleton
graham.dumpleton at gmail.com
Fri Sep 14 19:18:39 EDT 2007
On 14/09/2007, Odile Bénassy <odile at ofset.org> wrote: > Hello, > > I'm currently trying to port glasnost CMS on Apache2 (*) and encounter > issues related to Dummy Threads > > Here is my test.py file (I use it as a mod python handler): > > --%< > #!/usr/bin/env python > > import threading > from mod_python import apache > > def handler(req): > thread = threading.currentThread() > r = req.the_request > req.content_type = "text/plain" > req.write("Bonjour!") > req.write("\n") > req.write(r) > req.write("\n") > req.write(repr(thread)) > return apache.OK > > --%< > > As you can see, it is a rather minimal handler. > > At first it renders: > > --%< > Bonjour! > GET / HTTP/1.1 > <_MainThread(MainThread, started)> > --%< > > but if I call any URL more than 3 or 4 times in a row, I get this on the > browser > > -%< > Bonjour! > GET / HTTP/1.1 > <_DummyThread(Dummy-1, started daemon)> > --%< > > Can you help me figuring out why this dummy & annoying thing is happening? It is normal. When Apache worker MPM, or Windows MPM are used, then multiple requests are used to handle requests. All these threads are created by Apache and not Python. Which ever Apache thread so happened to be the one which initialised Python will show as MainThread. Any other Apache threads will be maked by Python as a DummyThread, which indicates they are a foreign thread created outside of Python, as is the case in Apache. Because requests are handled in random thread from Apache thread pool, sometimes you will thus see MainThread and other times you will see DummyThread. Why is this creating a problem? Graham
|