Exiting threads silently
Michael Bauer
Mike_ba at web.de
Tue Feb 12 06:31:49 EST 2002
Hi,
i have a small problem when exiting threads. According to the docs, a
silent exit should be possible without an exception.
from <http://www.python.org/doc/2.2/lib/module-thread.html>:
"exit()
Raise the SystemExit exception. When not caught, this will cause the thread
to exit silently."
Here is the relevant code
(This is part of a proxy module)
----------------------------------------
def error(self, code, body):
"""Answer Client with an error page
XXX Really not very nice page...
"""
import BaseHTTPServer
response = BaseHTTPServer.BaseHTTPRequestHandler.responses[code][0]
try:
self.wfile.write("HTTP/1.0 %s %s\r\n" % (code, response))
self.wfile.write("Server: iOwl.net ProxyServer\r\n")
self.wfile.write("Content-type: text/html\r\n")
self.wfile.write("\r\n")
self.wfile.write('<html><head>\n<title>%d %s</title>\n</head>\n'
'<body>\n%s\n</body>\n</html>' % (code, response, body))
self.wfile.flush()
self.wfile.close()
self.rfile.close()
except IOError:
# probably user aborted browser so we dont have a socket left
# to write to
pass
# Exit thread
thread.exit()
----------------------------------------
What happens is the error page gets displayed correctly in the browser, but
therad.exit() dumps following exception to the console:
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 40400)
Traceback (most recent call last):
File "/usr/lib/python2.2/SocketServer.py", line 458, in
process_request_thread
self.finish_request(request, client_address)
File "/usr/lib/python2.2/SocketServer.py", line 253, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/usr/lib/python2.2/SocketServer.py", line 514, in __init__
self.handle()
File "/home/fake/devel/iowl/pProxy/cProxyHandler.py", line 170, in handle
server, client = self.Connect(host, port)
File "/home/fake/devel/iowl/pProxy/cProxyHandler.py", line 346, in Connect
self.error(200, 'Error connecting to "%s" (%s)' % (host, err))
File "/home/fake/devel/iowl/pProxy/cProxyHandler.py", line 504, in error
thread.exit()
SystemExit
----------------------------------------
Anybody has an idea how i can exit silently?
thanks, Mike
(Running on linux from scratch, kernel 2.4.17 with Python 2.2)
More information about the Python-list
mailing list