cgi_main.py
author Tero Marttila <terom@fixme.fi>
Mon, 16 Feb 2009 19:02:59 +0200
changeset 77 bef7196f7682
parent 66 d2ce81dd5e5d
permissions -rw-r--r--
add tree_parse test and fix treeparse to handle other than filesystem paths
66
d2ce81dd5e5d separate cgi_main.py module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     1
#!/usr/bin/python2.5
d2ce81dd5e5d separate cgi_main.py module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     2
d2ce81dd5e5d separate cgi_main.py module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     3
"""
d2ce81dd5e5d separate cgi_main.py module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     4
    Simple WSGI CGI handler using wsgiref.handlers
d2ce81dd5e5d separate cgi_main.py module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     5
"""
d2ce81dd5e5d separate cgi_main.py module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     6
d2ce81dd5e5d separate cgi_main.py module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     7
import wsgiref.handlers
d2ce81dd5e5d separate cgi_main.py module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     8
d2ce81dd5e5d separate cgi_main.py module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     9
def error () :
d2ce81dd5e5d separate cgi_main.py module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    10
    """
d2ce81dd5e5d separate cgi_main.py module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    11
        Dumps out a raw traceback of the current exception to stdout, call from except
d2ce81dd5e5d separate cgi_main.py module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    12
    """
d2ce81dd5e5d separate cgi_main.py module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    13
d2ce81dd5e5d separate cgi_main.py module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    14
    import traceback, sys
d2ce81dd5e5d separate cgi_main.py module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    15
    
d2ce81dd5e5d separate cgi_main.py module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    16
    # HTTP headers
d2ce81dd5e5d separate cgi_main.py module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    17
    sys.stdout.write('Status: 500 Internal Server Error\r\n')
d2ce81dd5e5d separate cgi_main.py module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    18
    sys.stdout.write('Content-type: text/plain\r\n')
d2ce81dd5e5d separate cgi_main.py module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    19
    sys.stdout.write('\r\n')
d2ce81dd5e5d separate cgi_main.py module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    20
    
d2ce81dd5e5d separate cgi_main.py module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    21
    # exception traceback
d2ce81dd5e5d separate cgi_main.py module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    22
    traceback.print_exc(100, sys.stdout)
d2ce81dd5e5d separate cgi_main.py module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    23
d2ce81dd5e5d separate cgi_main.py module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    24
def run (app) :
d2ce81dd5e5d separate cgi_main.py module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    25
    """
d2ce81dd5e5d separate cgi_main.py module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    26
        Run CGI request
d2ce81dd5e5d separate cgi_main.py module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    27
    """
d2ce81dd5e5d separate cgi_main.py module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    28
d2ce81dd5e5d separate cgi_main.py module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    29
    # create handler
d2ce81dd5e5d separate cgi_main.py module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    30
    cgi_handler = wsgiref.handlers.CGIHandler()
d2ce81dd5e5d separate cgi_main.py module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    31
d2ce81dd5e5d separate cgi_main.py module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    32
    # run once
d2ce81dd5e5d separate cgi_main.py module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    33
    cgi_handler.run(app)
d2ce81dd5e5d separate cgi_main.py module
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    34