def __aenter__(self):
self._soc = await websockets.connect(self._ws_url)
async def loop():
try:
while 1:
resp = json.loads(await self._soc.recv())
if 'id' in resp:
self._method_responses[resp['id']] = resp
self._recv_data_lock[resp['id']].release()
elif 'method' in resp:
asyncio.ensure_future(self._run_later(self._handle_event(resp['method'], resp['params'])))
else:
raise RuntimeError('Unknown data came: {0}'.format(resp))
except (websockets.ConnectionClosed, concurrent.futures.CancelledError):
pass
except Exception as e:
traceback.print_exc()
asyncio.ensure_future(self._run_later(loop()))
return self
评论列表
文章目录