fix: graceful reconnect для event service при ConnectionResetError
This commit is contained in:
@@ -1025,11 +1025,21 @@ class SatelliteBase:
|
||||
await event_client.connect()
|
||||
_LOGGER.debug("Connected to event service")
|
||||
|
||||
try:
|
||||
await event_client.write_event(event)
|
||||
except (ConnectionResetError, BrokenPipeError, OSError) as err:
|
||||
# Event service disconnected, reconnect on next event
|
||||
_LOGGER.warning("Event service disconnected: %s", err)
|
||||
await _disconnect()
|
||||
event_client = None
|
||||
# Put event back in queue to retry after reconnect
|
||||
self._event_queue.put_nowait(event)
|
||||
await asyncio.sleep(self.settings.event.reconnect_seconds)
|
||||
|
||||
except asyncio.CancelledError:
|
||||
break
|
||||
except Exception:
|
||||
_LOGGER.exception("Unexpected error in event read task")
|
||||
_LOGGER.exception("Unexpected error in event task")
|
||||
await _disconnect()
|
||||
event_client = None # reconnect
|
||||
self._event_queue = None
|
||||
|
||||
Reference in New Issue
Block a user