Skip to content

Commit a385a14

Browse files
authored
chore: speed up mqtt session shutdown by avoiding a sleep (#435)
* chore: speed up mqtt session shutdown by avoiding a sleep * chore: fix lint whitespace
1 parent 6c9b7ad commit a385a14

File tree

1 file changed

+5
-0
lines changed

1 file changed

+5
-0
lines changed

roborock/mqtt/roborock_session.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ def __init__(self, params: MqttParams):
4949
self._params = params
5050
self._background_task: asyncio.Task[None] | None = None
5151
self._healthy = False
52+
self._stop = False
5253
self._backoff = MIN_BACKOFF_INTERVAL
5354
self._client: aiomqtt.Client | None = None
5455
self._client_lock = asyncio.Lock()
@@ -81,6 +82,7 @@ async def start(self) -> None:
8182

8283
async def close(self) -> None:
8384
"""Cancels the MQTT loop and shutdown the client library."""
85+
self._stop = True
8486
if self._background_task:
8587
self._background_task.cancel()
8688
try:
@@ -135,6 +137,9 @@ async def _run_task(self, start_future: asyncio.Future[None] | None) -> None:
135137
_LOGGER.exception("Uncaught error during MQTT session: %s", err)
136138

137139
self._healthy = False
140+
if self._stop:
141+
_LOGGER.debug("MQTT session closed, stopping retry loop")
142+
return
138143
_LOGGER.info("MQTT session disconnected, retrying in %s seconds", self._backoff.total_seconds())
139144
await asyncio.sleep(self._backoff.total_seconds())
140145
self._backoff = min(self._backoff * BACKOFF_MULTIPLIER, MAX_BACKOFF_INTERVAL)

0 commit comments

Comments
 (0)