Cleanup some plex tasks that delayed startup (#114418)
This commit is contained in:
parent
a102230498
commit
61982acb17
4 changed files with 5 additions and 18 deletions
|
@ -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)
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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]]
|
||||
|
||||
|
|
|
@ -97,6 +97,7 @@ class PlexServer:
|
|||
cooldown=DEBOUNCE_TIMEOUT,
|
||||
immediate=True,
|
||||
function=self._async_update_platforms,
|
||||
background=True,
|
||||
).async_call
|
||||
self.thumbnail_cache = {}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue