improve tiny_socket exception

bzr revid: ced-26049a63bda7b1543a0b2b8f4efbcb94006604ab
This commit is contained in:
ced 2007-08-09 08:17:48 +00:00
parent 6ffa3f78ef
commit 1cee6d32cf
2 changed files with 37 additions and 31 deletions

View File

@ -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

View File

@ -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]