rpc : _raw_read too may errors produced if the communication fails
def _raw_read(self, socket):
unpacker = msgpack.Unpacker(raw=False, max_buffer_size=MAX_BUFFER_SIZE)
try:
while True:
msg = socket.recv(8192)
if not msg:
break
unpacker.feed(msg)
for m in unpacker:
call_id = m[0]
if call_id < 0: # event:
value, signal = m[1]
louie.send(signal, self.proxy, value)
else:
return_values = m[1]
wq = self._queues.get(call_id)
if wq:
wq.put(return_values)
finally:
try:
socket.close()
except:
pass
self._socket = None
self._reading_task = None
for w in self._queues.values():
w.put(self.Retry())
for name in self._class_member:
delattr(type(self.proxy), name)
self._class_member = list()
If the communication fails, 'm=-1' and 'm[0]' fails.
unpacker.feed(msg)
for m in unpacker:
call_id = m[0]
The error is handled but the _raw_read() func is called again and again and produces too much errors at runtime. It makes difficult to exit a bliss session. The _raw_read() func should not be called again after few tries.