Handle EOFError with dbus-next
@@ -90,6 +90,7 @@ class DBus:
except Exception as err:
raise DBusFatalError() from err
+ for _ in range(3):
try:
introspection = await self._bus.introspect(
self.bus_name, self.object_path, timeout=10
@@ -97,6 +98,14 @@ class DBus:
except InvalidIntrospectionError as err:
_LOGGER.error("Can't parse introspect data: %s", err)
raise DBusParseError() from err
+ except EOFError:
+ _LOGGER.warning(
+ "Busy system at %s - %s", self.bus_name, self.object_path
+ )
+ else:
+ break
+
+ await asyncio.sleep(3)
self._add_interfaces(introspection)
