mirror of
https://github.com/home-assistant/core.git
synced 2025-07-09 22:37:11 +00:00
Cleanup some plex tasks that delayed startup (#114418)
This commit is contained in:
parent
a102230498
commit
61982acb17
@ -42,7 +42,6 @@ from .const import (
|
|||||||
DOMAIN,
|
DOMAIN,
|
||||||
INVALID_TOKEN_MESSAGE,
|
INVALID_TOKEN_MESSAGE,
|
||||||
PLATFORMS,
|
PLATFORMS,
|
||||||
PLATFORMS_COMPLETED,
|
|
||||||
PLEX_SERVER_CONFIG,
|
PLEX_SERVER_CONFIG,
|
||||||
PLEX_UPDATE_LIBRARY_SIGNAL,
|
PLEX_UPDATE_LIBRARY_SIGNAL,
|
||||||
PLEX_UPDATE_PLATFORMS_SIGNAL,
|
PLEX_UPDATE_PLATFORMS_SIGNAL,
|
||||||
@ -94,18 +93,13 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
|
|||||||
gdm.scan(scan_for_clients=True)
|
gdm.scan(scan_for_clients=True)
|
||||||
|
|
||||||
debouncer = Debouncer[None](
|
debouncer = Debouncer[None](
|
||||||
hass,
|
hass, _LOGGER, cooldown=10, immediate=True, function=gdm_scan, background=True
|
||||||
_LOGGER,
|
|
||||||
cooldown=10,
|
|
||||||
immediate=True,
|
|
||||||
function=gdm_scan,
|
|
||||||
).async_call
|
).async_call
|
||||||
|
|
||||||
hass_data = PlexData(
|
hass_data = PlexData(
|
||||||
servers={},
|
servers={},
|
||||||
dispatchers={},
|
dispatchers={},
|
||||||
websockets={},
|
websockets={},
|
||||||
platforms_completed={},
|
|
||||||
gdm_scanner=gdm,
|
gdm_scanner=gdm,
|
||||||
gdm_debouncer=debouncer,
|
gdm_debouncer=debouncer,
|
||||||
)
|
)
|
||||||
@ -180,7 +174,6 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|||||||
server_id = plex_server.machine_identifier
|
server_id = plex_server.machine_identifier
|
||||||
hass_data = get_plex_data(hass)
|
hass_data = get_plex_data(hass)
|
||||||
hass_data[SERVERS][server_id] = plex_server
|
hass_data[SERVERS][server_id] = plex_server
|
||||||
hass_data[PLATFORMS_COMPLETED][server_id] = set()
|
|
||||||
|
|
||||||
entry.add_update_listener(async_options_updated)
|
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
|
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(_):
|
def close_websocket_session(_):
|
||||||
websocket.close()
|
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)
|
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
|
||||||
|
|
||||||
for platform in PLATFORMS:
|
entry.async_create_background_task(
|
||||||
start_websocket_session(platform)
|
hass, websocket.listen(), f"plex websocket listener {entry.entry_id}"
|
||||||
|
)
|
||||||
|
|
||||||
async_cleanup_plex_devices(hass, entry)
|
async_cleanup_plex_devices(hass, entry)
|
||||||
|
|
||||||
|
@ -24,7 +24,6 @@ GDM_SCANNER: Final = "gdm_scanner"
|
|||||||
PLATFORMS = frozenset(
|
PLATFORMS = frozenset(
|
||||||
[Platform.BUTTON, Platform.MEDIA_PLAYER, Platform.SENSOR, Platform.UPDATE]
|
[Platform.BUTTON, Platform.MEDIA_PLAYER, Platform.SENSOR, Platform.UPDATE]
|
||||||
)
|
)
|
||||||
PLATFORMS_COMPLETED: Final = "platforms_completed"
|
|
||||||
PLAYER_SOURCE = "player_source"
|
PLAYER_SOURCE = "player_source"
|
||||||
SERVERS: Final = "servers"
|
SERVERS: Final = "servers"
|
||||||
WEBSOCKETS: Final = "websockets"
|
WEBSOCKETS: Final = "websockets"
|
||||||
|
@ -8,7 +8,6 @@ from typing import TYPE_CHECKING, Any, TypedDict
|
|||||||
from plexapi.gdm import GDM
|
from plexapi.gdm import GDM
|
||||||
from plexwebsocket import PlexWebsocket
|
from plexwebsocket import PlexWebsocket
|
||||||
|
|
||||||
from homeassistant.const import Platform
|
|
||||||
from homeassistant.core import CALLBACK_TYPE, HomeAssistant
|
from homeassistant.core import CALLBACK_TYPE, HomeAssistant
|
||||||
|
|
||||||
from .const import DOMAIN, SERVERS
|
from .const import DOMAIN, SERVERS
|
||||||
@ -23,7 +22,6 @@ class PlexData(TypedDict):
|
|||||||
servers: dict[str, PlexServer]
|
servers: dict[str, PlexServer]
|
||||||
dispatchers: dict[str, list[CALLBACK_TYPE]]
|
dispatchers: dict[str, list[CALLBACK_TYPE]]
|
||||||
websockets: dict[str, PlexWebsocket]
|
websockets: dict[str, PlexWebsocket]
|
||||||
platforms_completed: dict[str, set[Platform]]
|
|
||||||
gdm_scanner: GDM
|
gdm_scanner: GDM
|
||||||
gdm_debouncer: Callable[[], Coroutine[Any, Any, None]]
|
gdm_debouncer: Callable[[], Coroutine[Any, Any, None]]
|
||||||
|
|
||||||
|
@ -97,6 +97,7 @@ class PlexServer:
|
|||||||
cooldown=DEBOUNCE_TIMEOUT,
|
cooldown=DEBOUNCE_TIMEOUT,
|
||||||
immediate=True,
|
immediate=True,
|
||||||
function=self._async_update_platforms,
|
function=self._async_update_platforms,
|
||||||
|
background=True,
|
||||||
).async_call
|
).async_call
|
||||||
self.thumbnail_cache = {}
|
self.thumbnail_cache = {}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user