From 4fab5d5bd76210be1c9e979373cb4e06d6c35e7c Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 7 Oct 2019 11:18:54 -0700 Subject: [PATCH 1/2] Improve speed websocket sends messages --- homeassistant/components/websocket_api/http.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/websocket_api/http.py b/homeassistant/components/websocket_api/http.py index 17a6709496a4e6..f0934cb07aad5d 100644 --- a/homeassistant/components/websocket_api/http.py +++ b/homeassistant/components/websocket_api/http.py @@ -62,11 +62,13 @@ async def _writer(self): if message is None: break self._logger.debug("Sending %s", message) + + if isinstance(message, str): + await self.wsock.send_str(message) + return + try: - if isinstance(message, str): - await self.wsock.send_str(message) - else: - await self.wsock.send_json(message, dumps=JSON_DUMP) + dumped = JSON_DUMP(message) except (ValueError, TypeError) as err: self._logger.error( "Unable to serialize to JSON: %s\n%s", err, message @@ -76,6 +78,9 @@ async def _writer(self): message["id"], ERR_UNKNOWN_ERROR, "Invalid JSON in response" ) ) + return + + await self.wsock.send_str(dumped) @callback def _send_message(self, message): From 8c588641a25542e7b8a70c29a39aeea7cea1e4cd Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 7 Oct 2019 15:03:05 -0700 Subject: [PATCH 2/2] return -> continue --- homeassistant/components/websocket_api/http.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/websocket_api/http.py b/homeassistant/components/websocket_api/http.py index f0934cb07aad5d..08a0430ee2a976 100644 --- a/homeassistant/components/websocket_api/http.py +++ b/homeassistant/components/websocket_api/http.py @@ -61,11 +61,12 @@ async def _writer(self): message = await self._to_write.get() if message is None: break + self._logger.debug("Sending %s", message) if isinstance(message, str): await self.wsock.send_str(message) - return + continue try: dumped = JSON_DUMP(message) @@ -78,7 +79,7 @@ async def _writer(self): message["id"], ERR_UNKNOWN_ERROR, "Invalid JSON in response" ) ) - return + continue await self.wsock.send_str(dumped)