[mod_python] Dummy threads

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



More information about the Mod_python mailing list