wsgi.py
author Tero Marttila <terom@fixme.fi>
Mon, 16 Feb 2009 02:09:14 +0200
changeset 134 fbccc1648d79
child 135 19ff083c2870
permissions -rw-r--r--
improved error handling for CGI/FastCGI
134
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     1
"""
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     2
    Our custom WSGI application
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     3
"""
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     4
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     5
from qmsk.web import wsgi
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     6
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     7
import urls, error
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     8
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     9
# our custom app with custom error() method
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    10
class Application (wsgi.Application) :
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    11
    def __init__ (self) :
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    12
        """
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    13
            Construct wsgi.Application with our URLMapper
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    14
        """
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    15
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    16
        super(Application, self).__init__(urls.mapper)
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    17
    
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    18
    def handle_error (self, exc_info, env, start_response) :
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    19
        """
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    20
            Use error.build_error and return that
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    21
        """
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    22
        
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    23
        # get info
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    24
        status, content_type, body = error.build_error()
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    25
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    26
        # headers
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    27
        start_response(status, [('Content-type', content_type)], exc_info)
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    28
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    29
        # body
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    30
        return body
fbccc1648d79 improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    31