Reduce startup time for System Bridge integration (#91171)

This commit is contained in:
Aidan Timson 2023-04-12 23:36:51 +01:00 committed by GitHub
parent ea12d7a86f
commit d6c954a909
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 12 deletions

View File

@ -53,7 +53,10 @@ SERVICE_SEND_KEYPRESS = "send_keypress"
SERVICE_SEND_TEXT = "send_text"
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
async def async_setup_entry(
hass: HomeAssistant,
entry: ConfigEntry,
) -> bool:
"""Set up System Bridge from a config entry."""
# Check version before initialising
@ -64,11 +67,12 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
session=async_get_clientsession(hass),
)
try:
if not await version.check_supported():
raise ConfigEntryNotReady(
"You are not running a supported version of System Bridge. Please"
f" update to {SUPPORTED_VERSION} or higher."
)
async with async_timeout.timeout(10):
if not await version.check_supported():
raise ConfigEntryNotReady(
"You are not running a supported version of System Bridge. Please"
f" update to {SUPPORTED_VERSION} or higher."
)
except AuthenticationException as exception:
_LOGGER.error("Authentication failed for %s: %s", entry.title, exception)
raise ConfigEntryAuthFailed from exception
@ -87,7 +91,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
entry=entry,
)
try:
async with async_timeout.timeout(30):
async with async_timeout.timeout(10):
await coordinator.async_get_data(MODULES)
except AuthenticationException as exception:
_LOGGER.error("Authentication failed for %s: %s", entry.title, exception)
@ -105,8 +109,8 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
try:
# Wait for initial data
async with async_timeout.timeout(30):
while not coordinator.is_ready():
async with async_timeout.timeout(10):
while not coordinator.is_ready:
_LOGGER.debug(
"Waiting for initial data from %s (%s)",
entry.title,

View File

@ -55,7 +55,7 @@ async def _validate_input(
data[CONF_API_KEY],
)
try:
async with async_timeout.timeout(30):
async with async_timeout.timeout(15):
await websocket_client.connect(session=async_get_clientsession(hass))
hass.async_create_task(websocket_client.listen())
response = await websocket_client.get_data(GetData(modules=["system"]))

View File

@ -82,6 +82,7 @@ class SystemBridgeDataUpdateCoordinator(
hass, LOGGER, name=DOMAIN, update_interval=timedelta(seconds=30)
)
@property
def is_ready(self) -> bool:
"""Return if the data is ready."""
if self.data is None:
@ -157,7 +158,7 @@ class SystemBridgeDataUpdateCoordinator(
self.last_update_success = False
self.async_update_listeners()
except (ConnectionClosedException, ConnectionResetError) as exception:
self.logger.info(
self.logger.debug(
"Websocket connection closed for %s. Will retry: %s",
self.title,
exception,
@ -168,7 +169,7 @@ class SystemBridgeDataUpdateCoordinator(
self.last_update_success = False
self.async_update_listeners()
except ConnectionErrorException as exception:
self.logger.warning(
self.logger.debug(
"Connection error occurred for %s. Will retry: %s",
self.title,
exception,