Cleanup some plex tasks that delayed startup (#114418)

This commit is contained in:
J. Nick Koston 2024-03-28 20:36:33 -10:00 committed by GitHub
parent a102230498
commit 61982acb17
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 5 additions and 18 deletions

View file

@ -42,7 +42,6 @@ from .const import (
DOMAIN,
INVALID_TOKEN_MESSAGE,
PLATFORMS,
PLATFORMS_COMPLETED,
PLEX_SERVER_CONFIG,
PLEX_UPDATE_LIBRARY_SIGNAL,
PLEX_UPDATE_PLATFORMS_SIGNAL,
@ -94,18 +93,13 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
gdm.scan(scan_for_clients=True)
debouncer = Debouncer[None](
hass,
_LOGGER,
cooldown=10,
immediate=True,
function=gdm_scan,
hass, _LOGGER, cooldown=10, immediate=True, function=gdm_scan, background=True
).async_call
hass_data = PlexData(
servers={},
dispatchers={},
websockets={},
platforms_completed={},
gdm_scanner=gdm,
gdm_debouncer=debouncer,
)
@ -180,7 +174,6 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
server_id = plex_server.machine_identifier
hass_data = get_plex_data(hass)
hass_data[SERVERS][server_id] = plex_server
hass_data[PLATFORMS_COMPLETED][server_id] = set()
entry.add_update_listener(async_options_updated)
@ -233,11 +226,6 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
)
hass_data[WEBSOCKETS][server_id] = websocket
def start_websocket_session(platform):
hass_data[PLATFORMS_COMPLETED][server_id].add(platform)
if hass_data[PLATFORMS_COMPLETED][server_id] == PLATFORMS:
hass.loop.create_task(websocket.listen())
def close_websocket_session(_):
websocket.close()
@ -248,8 +236,9 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
for platform in PLATFORMS:
start_websocket_session(platform)
entry.async_create_background_task(
hass, websocket.listen(), f"plex websocket listener {entry.entry_id}"
)
async_cleanup_plex_devices(hass, entry)

View file

@ -24,7 +24,6 @@ GDM_SCANNER: Final = "gdm_scanner"
PLATFORMS = frozenset(
[Platform.BUTTON, Platform.MEDIA_PLAYER, Platform.SENSOR, Platform.UPDATE]
)
PLATFORMS_COMPLETED: Final = "platforms_completed"
PLAYER_SOURCE = "player_source"
SERVERS: Final = "servers"
WEBSOCKETS: Final = "websockets"

View file

@ -8,7 +8,6 @@ from typing import TYPE_CHECKING, Any, TypedDict
from plexapi.gdm import GDM
from plexwebsocket import PlexWebsocket
from homeassistant.const import Platform
from homeassistant.core import CALLBACK_TYPE, HomeAssistant
from .const import DOMAIN, SERVERS
@ -23,7 +22,6 @@ class PlexData(TypedDict):
servers: dict[str, PlexServer]
dispatchers: dict[str, list[CALLBACK_TYPE]]
websockets: dict[str, PlexWebsocket]
platforms_completed: dict[str, set[Platform]]
gdm_scanner: GDM
gdm_debouncer: Callable[[], Coroutine[Any, Any, None]]

View file

@ -97,6 +97,7 @@ class PlexServer:
cooldown=DEBOUNCE_TIMEOUT,
immediate=True,
function=self._async_update_platforms,
background=True,
).async_call
self.thumbnail_cache = {}