Improve exception handling and logging.
authorBenjamin Braatz <bb@bbraatz.eu>
Fri, 28 Jul 2023 09:46:45 +0000 (11:46 +0200)
committerBenjamin Braatz <bb@bbraatz.eu>
Fri, 28 Jul 2023 09:46:45 +0000 (11:46 +0200)
controlpi_plugins/wsserver.py

index 2eaf2154deb7915b61564394504969fa46d19e28..31a4ca4132ff9088c99b1cd757b34cffbc2edea2 100644 (file)
@@ -48,9 +48,13 @@ class Connection:
             await self._websocket.send(json_message)
         except ConnectionClosed:
             pass
+        except Exception as e:
+            print(f"WSServer Connection '{self._name}':"
+                  f" Exception while writing to websocket: {e}")
 
     async def run(self):
         """Listen on websocket and relay messages to bus."""
+        print(f"WSServer Connection '{self._name}': Connection opened.")
         await self._bus.send(Message(self._name,
                                      {'event': 'connection opened',
                                       'address': self._address,
@@ -93,14 +97,18 @@ class Connection:
                             configure_message['mac'] = message['mac']
                         await self._bus.send(configure_message)
                     except BusException as e:
-                        print(f"Unable to register client '{new_name}'"
-                              f"on bus: {e}")
+                        print(f"WSServer Connection '{self._name}':"
+                              f" Unable to register as client '{new_name}'"
+                              f" on bus: {e}")
                         await self._websocket.close()
                 else:
                     if self._registered:
                         await self._bus.send(Message(self._name, message))
         except ConnectionClosed:
             pass
+        except Exception as e:
+            print(f"WSServer Connection '{self._name}':"
+                  f" Exception while reading from websocket: {e}")
         if self._registered:
             await self._bus.send(Message(self._name,
                                          {'event': 'connection closed'}))
@@ -263,8 +271,8 @@ class WSServer(BasePlugin):
                                  port=self.conf['port'],
                                  process_request=self._process_request,
                                  ping_interval=1, ping_timeout=5):
-                    print(f"WSServer '{self.name}'"
-                          f" serving on port {self.conf['port']}.")
+                    print(f"WSServer '{self.name}': Serving on"
+                          f" {self.conf['host']}:{self.conf['port']}.")
                     await stop
             except OSError:
                 await asyncio.sleep(1)