Switch a few more async_track_state_change to the faster async_track_state_change_event (#37833)

async_track_state_change_event is faster than async_track_state_change
and since we do not care about the data being returned to the callback
this is a simple speedup
This commit is contained in:
J. Nick Koston 2020-07-14 19:31:34 -10:00 committed by GitHub
parent b12566e265
commit 20d5d3c162
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 12 deletions

View file

@ -20,7 +20,7 @@ from homeassistant.core import callback
from homeassistant.exceptions import TemplateError from homeassistant.exceptions import TemplateError
import homeassistant.helpers.config_validation as cv import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.entity import Entity from homeassistant.helpers.entity import Entity
from homeassistant.helpers.event import async_track_state_change from homeassistant.helpers.event import async_track_state_change_event
import homeassistant.util.dt as dt_util import homeassistant.util.dt as dt_util
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
@ -128,7 +128,7 @@ class HistoryStatsSensor(Entity):
self.async_schedule_update_ha_state(True) self.async_schedule_update_ha_state(True)
force_refresh() force_refresh()
async_track_state_change(self.hass, self._entity_id, force_refresh) async_track_state_change_event(self.hass, [self._entity_id], force_refresh)
# Delay first refresh to keep startup fast # Delay first refresh to keep startup fast
hass.bus.listen_once(EVENT_HOMEASSISTANT_START, start_refresh) hass.bus.listen_once(EVENT_HOMEASSISTANT_START, start_refresh)

View file

@ -1,6 +1,6 @@
"""Light support for switch entities.""" """Light support for switch entities."""
import logging import logging
from typing import Callable, Optional, Sequence, cast from typing import Any, Callable, Optional, Sequence, cast
import voluptuous as vol import voluptuous as vol
@ -13,10 +13,10 @@ from homeassistant.const import (
STATE_ON, STATE_ON,
STATE_UNAVAILABLE, STATE_UNAVAILABLE,
) )
from homeassistant.core import CALLBACK_TYPE, State, callback from homeassistant.core import CALLBACK_TYPE, callback
import homeassistant.helpers.config_validation as cv import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.entity import Entity from homeassistant.helpers.entity import Entity
from homeassistant.helpers.event import async_track_state_change from homeassistant.helpers.event import async_track_state_change_event
from homeassistant.helpers.typing import ( from homeassistant.helpers.typing import (
ConfigType, ConfigType,
DiscoveryInfoType, DiscoveryInfoType,
@ -117,15 +117,13 @@ class LightSwitch(LightEntity):
"""Register callbacks.""" """Register callbacks."""
@callback @callback
def async_state_changed_listener( def async_state_changed_listener(*_: Any) -> None:
entity_id: str, old_state: State, new_state: State
) -> None:
"""Handle child updates.""" """Handle child updates."""
self.async_schedule_update_ha_state(True) self.async_schedule_update_ha_state(True)
assert self.hass is not None assert self.hass is not None
self._async_unsub_state_changed = async_track_state_change( self._async_unsub_state_changed = async_track_state_change_event(
self.hass, self._switch_entity_id, async_state_changed_listener self.hass, [self._switch_entity_id], async_state_changed_listener
) )
async def async_will_remove_from_hass(self): async def async_will_remove_from_hass(self):

View file

@ -8,7 +8,7 @@ from homeassistant.const import EVENT_STATE_CHANGED, EVENT_TIME_CHANGED, MATCH_A
from homeassistant.core import DOMAIN as HASS_DOMAIN, callback from homeassistant.core import DOMAIN as HASS_DOMAIN, callback
from homeassistant.exceptions import HomeAssistantError, ServiceNotFound, Unauthorized from homeassistant.exceptions import HomeAssistantError, ServiceNotFound, Unauthorized
from homeassistant.helpers import config_validation as cv from homeassistant.helpers import config_validation as cv
from homeassistant.helpers.event import async_track_state_change from homeassistant.helpers.event import async_track_state_change_event
from homeassistant.helpers.service import async_get_all_descriptions from homeassistant.helpers.service import async_get_all_descriptions
from homeassistant.loader import IntegrationNotFound, async_get_integration from homeassistant.loader import IntegrationNotFound, async_get_integration
@ -255,7 +255,7 @@ def handle_render_template(hass, connection, msg):
) )
if entity_ids and entity_ids != MATCH_ALL: if entity_ids and entity_ids != MATCH_ALL:
connection.subscriptions[msg["id"]] = async_track_state_change( connection.subscriptions[msg["id"]] = async_track_state_change_event(
hass, entity_ids, state_listener hass, entity_ids, state_listener
) )
else: else: