Improve error message handling.
This commit is contained in:
parent
df5126df56
commit
e51529d79a
|
@ -87,13 +87,31 @@ class RPCServer(SocketServer.TCPServer):
|
||||||
return self.socket, self.server_address
|
return self.socket, self.server_address
|
||||||
|
|
||||||
def handle_error(self, request, client_address):
|
def handle_error(self, request, client_address):
|
||||||
"""Override TCPServer method, no error message if exiting"""
|
"""Override TCPServer method
|
||||||
|
|
||||||
|
Error message goes to __stderr__. No error message if exiting
|
||||||
|
normally or socket raised EOF. Other exceptions not handled in
|
||||||
|
server code will cause os._exit.
|
||||||
|
|
||||||
|
"""
|
||||||
try:
|
try:
|
||||||
raise
|
raise
|
||||||
except SystemExit:
|
except SystemExit:
|
||||||
raise
|
raise
|
||||||
else:
|
except EOFError:
|
||||||
TCPServer.handle_error(request, client_address)
|
pass
|
||||||
|
except:
|
||||||
|
erf = 'sys.__stderr__'
|
||||||
|
print>>erf, '-'*40
|
||||||
|
print>>erf, 'Unhandled server exception!'
|
||||||
|
print>>erf, 'Thread: %s' % threading.currentThread().getName()
|
||||||
|
print>>erf, 'Client Address: ', address
|
||||||
|
print>>erf, 'Request: ', repr(request)
|
||||||
|
traceback.print_exc(file=erf)
|
||||||
|
print>>erf, '\n*** Unrecoverable, server exiting!'
|
||||||
|
print>>erf, '-'*40
|
||||||
|
import os
|
||||||
|
os._exit
|
||||||
|
|
||||||
|
|
||||||
objecttable = {}
|
objecttable = {}
|
||||||
|
|
Loading…
Reference in New Issue