Вероятно, вам следует повторно вызвать любые исключения, возникающие при вызове function(ip_addr ...)
в вашем пользовательском методе _dispatch
, в противном случае вы рискуете закорочить встроенную обработку ошибок.
Вот что я имею в виду ...
class RequestHandler(SimpleXMLRPCServer.SimpleXMLRPCRequestHandler):
def _dispatch(self, method, params):
function = self.server.funcs[method]
def decor(function, ip_addr):
def new_function(*args):
try:
return function(ip_addr, *args)
except Exception, err:
log_msg('Exception ocurred in XMLRPC thread (%s)!' % err)
raise # <---- re-raise
return new_function
... хотя, я бы удивился, если это связано с вашей проблемой. То, что у вас должно работать нормально, насколько я могу судить.
Из любопытства, что произойдет, если вместо этого вы создадите подкласс ForkingMixin?