From 1cee6d32cfd728dae6b4a0a00d9f532032012e0c Mon Sep 17 00:00:00 2001 From: ced <> Date: Thu, 9 Aug 2007 08:17:48 +0000 Subject: [PATCH] improve tiny_socket exception bzr revid: ced-26049a63bda7b1543a0b2b8f4efbcb94006604ab --- bin/netsvc.py | 62 +++++++++++++++++++++++++--------------------- bin/tiny_socket.py | 6 ++--- 2 files changed, 37 insertions(+), 31 deletions(-) diff --git a/bin/netsvc.py b/bin/netsvc.py index 1d792c8b7a7..427c7fa1b44 100644 --- a/bin/netsvc.py +++ b/bin/netsvc.py @@ -289,38 +289,44 @@ class TinySocketClientThread(threading.Thread): import traceback import time import select + self.running = True try: - self.running = True ts = tiny_socket.mysocket(self.sock) - while self.running: - msg = ts.myreceive() - - try: - s=LocalService(msg[0]) - m=getattr(s,msg[1]) - s._service._response=None - r=m(*msg[2:]) - res=s._service._response - if res!=None: - r=res - ts.mysend(r) - except Exception, e: - logger = Logger() - tb_s = reduce(lambda x, y: x+y, traceback.format_exception(sys.exc_type, sys.exc_value, sys.exc_traceback)) - logger.notifyChannel("web-services", LOG_ERROR, 'Exception in call: ' + tb_s) - s=str(e) - import tools - if tools.config['debug_mode']: - import pdb - tb = sys.exc_info()[2] - pdb.post_mortem(tb) - ts.mysend(e, exception=True, traceback=tb_s) - self.sock.close() - self.threads.remove(self) - return True - except Exception, e: + except: self.sock.close() return False + while self.running: + try: + msg = ts.myreceive() + except: + self.sock.close() + return False + try: + s=LocalService(msg[0]) + m=getattr(s,msg[1]) + s._service._response=None + r=m(*msg[2:]) + res=s._service._response + if res!=None: + r=res + ts.mysend(r) + except Exception, e: + logger = Logger() + tb_s = reduce(lambda x, y: x+y, traceback.format_exception(sys.exc_type, sys.exc_value, sys.exc_traceback)) + logger.notifyChannel("web-services", LOG_ERROR, 'Exception in call: ' + tb_s) + s=str(e) + import tools + if tools.config['debug_mode']: + import pdb + tb = sys.exc_info()[2] + pdb.post_mortem(tb) + ts.mysend(e, exception=True, traceback=tb_s) + except: + pass + self.sock.close() + self.threads.remove(self) + return True + def stop(self): self.running = False diff --git a/bin/tiny_socket.py b/bin/tiny_socket.py index 95c1296fc2f..5a9a894aae8 100644 --- a/bin/tiny_socket.py +++ b/bin/tiny_socket.py @@ -6,6 +6,7 @@ class Myexception(Exception): def __init__(self, faultCode, faultString): self.faultCode = faultCode self.faultString = faultString + super(Myexception, self).__init__(faultCode, faultString) class mysocket: def __init__(self, sock=None): @@ -14,7 +15,7 @@ class mysocket: socket.AF_INET, socket.SOCK_STREAM) else: self.sock = sock - self.sock.settimeout(60) + self.sock.settimeout(120) def connect(self, host, port=False): if not port: protocol, buf = host.split('//') @@ -56,8 +57,7 @@ class mysocket: res = cPickle.loads(msg) if isinstance(res[0],Exception): if exception: - raise Myexception(exception, str(res[0]), str(res[1])) + raise Myexception(str(res[0]), str(res[1])) raise res[0] else: return res[0] -