On Wed, Feb 18, 2015 at 8:08 AM,  <tak.govo...@gmail.com> wrote:
> I want to generate an html page with http response status '200 OK' in case of 
> an uncaught exception in my wsgi application, instead of web server's 
> standard '500 Internal Server Error' response for such case. To do so, I've 
> made the following sample code:
>
> import sys
>
> def application(environ, start_response):
>     def exception(etype, evalue, trace):
>         start_response('200 OK', [('Content-Type', 'text/plain')])
>         return ['Error']
>
>     sys.excepthook = exception
>
>     1/0
>
>     start_response('200 OK', [('Content-Type', 'text/plain')])
>     return ['OK']
>
> But the function 'exception' is never called, and a standard '500 Internal 
> Server Error' response is still generated by server in case of an uncaught 
> exception.

sys.excepthook is called just before the interpreter exits due to an
exception. In a mod_wsgi environment, having the interpreter exit just
because of an exception would be undesirable. I don't know exactly
what it's doing under the hood, but I would assume that the exception
never makes it to sys.excepthook because the gateway itself is
catching the exception in order to generate the 500 response.

> I looked through the documentation, but unable to find the answer. Are there 
> any ways to handle uncaught by try..except exceptions under mod_wsgi?

Here is what PEP 3333 has to say about error handling:
https://www.python.org/dev/peps/pep-3333/#error-handling
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to