Can you try 3.4 from the source code repo. http://code.google.com/p/modwsgi/wiki/ChangesInVersion0304
I recollect finding some issues with Python 3.X support which may have silently fixed, but don't recollect what they were. Graham On 14 July 2012 17:15, Jason Garber <[email protected]> wrote: > 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. -- 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.
