X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FN2VC.git;a=blobdiff_plain;f=juju%2Fclient%2Fconnection.py;h=b9eb3bcdc30e97f25be3a2d1c1fca0a824e6f1dd;hp=82ec4faf8123f5581a655f54b66683e8604ebdc0;hb=fe64744d4eb7d1b989b24d6178929793de57a7d5;hpb=afd9bf49afc5025f3b668fd3a09b0275d7edc382 diff --git a/juju/client/connection.py b/juju/client/connection.py index 82ec4fa..b9eb3bc 100644 --- a/juju/client/connection.py +++ b/juju/client/connection.py @@ -84,14 +84,22 @@ class Connection: await self.ws.close() async def recv(self, request_id): + if not self.is_open: + raise websockets.exceptions.ConnectionClosed(0, 'websocket closed') return await self.messages.get(request_id) async def receiver(self): while self.is_open: - result = await self.ws.recv() - if result is not None: - result = json.loads(result) - await self.messages.put(result['request-id'], result) + try: + result = await self.ws.recv() + if result is not None: + result = json.loads(result) + await self.messages.put(result['request-id'], result) + except Exception as e: + await self.messages.put_all(e) + raise + await self.messages.put_all(websockets.exceptions.ConnectionClosed( + 0, 'websocket closed')) async def rpc(self, msg, encoder=None): self.__request_id__ += 1 @@ -111,7 +119,7 @@ class Connection: # API Error Response raise JujuAPIError(result) - if not 'response' in result: + if 'response' not in result: # This may never happen return result