Hi Graham, I see you are using python 2. I neglected to mention we are on Python 3.1.4.
I will test with your test script and see if I can reproduce. Thanks! Jason On Jul 14, 2012 8:06 PM, "Graham Dumpleton" <[email protected]> wrote: > On 12 July 2012 16:45, Jason Garber <[email protected]> wrote: > > Hello, > > > > I have a very odd situation. > > > > mod_wsgi 3.3 on RHEL 5 x86_64 > > > > > > If I raise an exception in an html-generating function, it is caught just > > fine by my WSGI framework with a try/except block. > > > > If I raise the exact same exception within a plain function called from > the > > same place, it causes a 500 internal server error: mod_wsgi (pid=17007): > > Exception occurred processing WSGI script > > '/home/jason/Code/WhiteBoot4/DevLevel.2/TMTManage/WSGI/Dashboard.wsgi' > > > > I can place an explicit try/except around that exact spot, and it is > > completely skipped. It's really bizarre. Any ideas? > > > > Here is a simple example. Note that I have actually reproduced it with > this > > level of simplicity. > > > > def FunctionCalledByWSGIFile(): > > try: > > RenderHTML() > > except Exception as e: > > # output error here > > ... > > > > def RenderHTML(): > > ... > > # This way works fine > > raise Exception("foo") > > ... > > # This way causes 500 internal server error > > data = Select() > > > > def Select(): > > raise Exception("foo") > > I have no problem with the following constructed based on what you give. > > In both cases will print 'EXCEPTION foo' to log file. > > There is no 500 error as the exception is not reraised in that example. > > Try using a blind 'except' with type and then use: > > except Exception as e: > print 'EXCEPTION', e > > except: > import traceback, sys > traceback.print_exception(*sys.exc_info()) > > to see what happens. > > Original full test script I used is: > > def FunctionCalledByWSGIFile(): > try: > RenderHTML() > except Exception as e: > print 'EXCEPTION', e > > def RenderHTML(): > # This way works fine > #raise Exception("foo") > > # This way causes 500 internal server error > data = Select() > > def Select(): > raise Exception("foo") > > def application(environ, start_response): > status = '200 OK' > output = 'Hello World!' > > response_headers = [('Content-type', 'text/plain'), > ('Content-Length', str(len(output)))] > start_response(status, response_headers) > > FunctionCalledByWSGIFile() > > return [output] > > -- > You received this message because you are subscribed to the Google Groups > "modwsgi" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/modwsgi?hl=en. > > -- You received this message because you are subscribed to the Google Groups "modwsgi" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/modwsgi?hl=en.
