|
Graham Dumpleton
grahamd at dscpl.com.au
Mon Jun 6 07:02:49 EDT 2005
On 06/06/2005, at 5:39 PM, Alexey Melchakov wrote:
>
> Hi.
> I'm using mod_python 3.1.4, apache 2.0.x/prefork and python2.4.
> The following code doesn't work:
>
> from mod_python import apache
> import threading
>
> def something():
> open('/tmp/thread', 'w').close()
>
> def handler(req):
> threading.Thread(target=something).start()
> return apache.OK
>
> Browser request successfully hits the handler(), and no errors occure,
> but something() is not called (no file on filesystem after request).
>
> If I insert logging statements after thread initialization and a call
> of start() thread object looks like this:
> <Thread(Thread-1, initial)>
> <Thread(Thread-1, started)>
>
> I'm not good with threading and this might be very ordinary
> situation, dont really know. Please help.
Try the following code instead so that you can see if a Python
exception is
being raised within the thread. One possibility is that you might be
running
up against a strange problem seen by a few people which hasn't really
been
worked out yet. One previous post where someone had this problem was:
http://www.modpython.org/pipermail/mod_python/2005-January/017129.html
for more details.
Anyway, let us know what the following produces.
import threading
import time
from mod_python import apache
def openfiletest(req):
try:
a = file("/tmp/test", "w")
req.write("file() was OK\n")
except Exception, e:
req.write("file() threw exception: " + str(e) + "\n")
def handler(req):
req.write("In main thread: ")
openfiletest(req)
req.write("In child thread: ")
t = threading.Thread(target=openfiletest, args=(req,) )
t.start()
time.sleep(1)
return apache.OK
|