improve tiny_socket exception
bzr revid: ced-26049a63bda7b1543a0b2b8f4efbcb94006604ab
This commit is contained in:
parent
6ffa3f78ef
commit
1cee6d32cf
|
@ -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
|
||||
|
||||
|
|
|
@ -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]
|
||||
|
||||
|
|
Loading…
Reference in New Issue