Reduce samsungtv startup time (#112007)

Create the startup tasks eagerly

This one is a bit high
This commit is contained in:
J. Nick Koston 2024-03-01 17:43:08 -10:00 committed by GitHub
parent 4249d17c1b
commit 5f65315e86
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -2,7 +2,7 @@
from __future__ import annotations from __future__ import annotations
import asyncio import asyncio
from collections.abc import Coroutine, Sequence from collections.abc import Sequence
from typing import Any from typing import Any
from async_upnp_client.aiohttp import AiohttpNotifyServer, AiohttpSessionRequester from async_upnp_client.aiohttp import AiohttpNotifyServer, AiohttpSessionRequester
@ -35,6 +35,7 @@ from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.aiohttp_client import async_get_clientsession from homeassistant.helpers.aiohttp_client import async_get_clientsession
from homeassistant.helpers.entity_platform import AddEntitiesCallback from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.trigger import PluggableAction from homeassistant.helpers.trigger import PluggableAction
from homeassistant.util.async_ import create_eager_task
from .bridge import SamsungTVBridge, SamsungTVWSBridge from .bridge import SamsungTVBridge, SamsungTVWSBridge
from .const import CONF_SSDP_RENDERING_CONTROL_LOCATION, DOMAIN, LOGGER from .const import CONF_SSDP_RENDERING_CONTROL_LOCATION, DOMAIN, LOGGER
@ -171,15 +172,15 @@ class SamsungTVDevice(SamsungTVEntity, MediaPlayerEntity):
await self._dmr_device.async_unsubscribe_services() await self._dmr_device.async_unsubscribe_services()
return return
startup_tasks: list[Coroutine[Any, Any, Any]] = [] startup_tasks: list[asyncio.Task[Any]] = []
if not self._app_list_event.is_set(): if not self._app_list_event.is_set():
startup_tasks.append(self._async_startup_app_list()) startup_tasks.append(create_eager_task(self._async_startup_app_list()))
if self._dmr_device and not self._dmr_device.is_subscribed: if self._dmr_device and not self._dmr_device.is_subscribed:
startup_tasks.append(self._async_resubscribe_dmr()) startup_tasks.append(create_eager_task(self._async_resubscribe_dmr()))
if not self._dmr_device and self._ssdp_rendering_control_location: if not self._dmr_device and self._ssdp_rendering_control_location:
startup_tasks.append(self._async_startup_dmr()) startup_tasks.append(create_eager_task(self._async_startup_dmr()))
if startup_tasks: if startup_tasks:
await asyncio.gather(*startup_tasks) await asyncio.gather(*startup_tasks)