author | Tero Marttila <terom@fixme.fi> |
Mon, 16 Feb 2009 02:09:14 +0200 | |
changeset 134 | fbccc1648d79 |
child 135 | 19ff083c2870 |
permissions | -rw-r--r-- |
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 |
Build error messages |
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 |
import traceback, sys |
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 |
def build_error (exc_info=None) : |
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 |
Dumps out a raw traceback of the given/current exception to stdout. |
fbccc1648d79
improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
10 |
|
fbccc1648d79
improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
11 |
Returns a (status, content-type, body) tuple, with all components being non-unicode strs. |
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 |
|
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 |
# default |
fbccc1648d79
improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
16 |
if not exc_info : |
fbccc1648d79
improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
17 |
exc_info = sys.exc_info() |
fbccc1648d79
improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
18 |
|
fbccc1648d79
improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
19 |
# return |
fbccc1648d79
improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
20 |
return ('500 Internal Server Error', 'text/html; charset=UTF-8', ("""\ |
fbccc1648d79
improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
21 |
<html><head><title>500 Internal Server Error</title></head><body> |
fbccc1648d79
improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
22 |
<h1>Oops!</h1> |
fbccc1648d79
improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
23 |
<p> |
fbccc1648d79
improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
24 |
An error occured, which was not logged, and will not be reported to anybody. It might be your fault, or it might be |
fbccc1648d79
improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
25 |
the programmer's, but it's probably not mine. If you think you really care, you can try poking the administrator of |
fbccc1648d79
improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
26 |
this site to see if they respond. |
fbccc1648d79
improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
27 |
</p> |
fbccc1648d79
improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
28 |
<p> |
fbccc1648d79
improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
29 |
If you do so, please include the following information: |
fbccc1648d79
improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
30 |
</p> |
fbccc1648d79
improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
31 |
<h2>Details:</h2> |
fbccc1648d79
improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
32 |
<pre>%(traceback)s</pre> |
fbccc1648d79
improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
33 |
</body></html>""" % dict( |
fbccc1648d79
improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
34 |
traceback = ''.join(traceback.format_exception(*exc_info)) |
fbccc1648d79
improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
35 |
)).encode('utf-8')) |
fbccc1648d79
improved error handling for CGI/FastCGI
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
36 |