Fix performance regression in integration from state_reported (#120621)
* Fix performance regression in integration from state_reported Because the callbacks were no longer indexed by entity id, users saw upwards of 1M calls/min https://github.com/home-assistant/core/pull/113869/files#r1655580523 * Update homeassistant/helpers/event.py * coverage --------- Co-authored-by: Paulus Schoutsen <balloob@gmail.com>pull/120638/head
parent
617ab48fa9
commit
5503379a3b
|
@ -27,8 +27,6 @@ from homeassistant.const import (
|
||||||
CONF_METHOD,
|
CONF_METHOD,
|
||||||
CONF_NAME,
|
CONF_NAME,
|
||||||
CONF_UNIQUE_ID,
|
CONF_UNIQUE_ID,
|
||||||
EVENT_STATE_CHANGED,
|
|
||||||
EVENT_STATE_REPORTED,
|
|
||||||
STATE_UNAVAILABLE,
|
STATE_UNAVAILABLE,
|
||||||
UnitOfTime,
|
UnitOfTime,
|
||||||
)
|
)
|
||||||
|
@ -45,7 +43,11 @@ from homeassistant.helpers import config_validation as cv, entity_registry as er
|
||||||
from homeassistant.helpers.device import async_device_info_to_link_from_entity
|
from homeassistant.helpers.device import async_device_info_to_link_from_entity
|
||||||
from homeassistant.helpers.device_registry import DeviceInfo
|
from homeassistant.helpers.device_registry import DeviceInfo
|
||||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
from homeassistant.helpers.event import async_call_later
|
from homeassistant.helpers.event import (
|
||||||
|
async_call_later,
|
||||||
|
async_track_state_change_event,
|
||||||
|
async_track_state_reported_event,
|
||||||
|
)
|
||||||
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
|
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
|
||||||
|
|
||||||
from .const import (
|
from .const import (
|
||||||
|
@ -440,21 +442,17 @@ class IntegrationSensor(RestoreSensor):
|
||||||
self._derive_and_set_attributes_from_state(state)
|
self._derive_and_set_attributes_from_state(state)
|
||||||
|
|
||||||
self.async_on_remove(
|
self.async_on_remove(
|
||||||
self.hass.bus.async_listen(
|
async_track_state_change_event(
|
||||||
EVENT_STATE_CHANGED,
|
self.hass,
|
||||||
|
self._sensor_source_id,
|
||||||
handle_state_change,
|
handle_state_change,
|
||||||
event_filter=callback(
|
|
||||||
lambda event_data: event_data["entity_id"] == self._sensor_source_id
|
|
||||||
),
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
self.async_on_remove(
|
self.async_on_remove(
|
||||||
self.hass.bus.async_listen(
|
async_track_state_reported_event(
|
||||||
EVENT_STATE_REPORTED,
|
self.hass,
|
||||||
|
self._sensor_source_id,
|
||||||
handle_state_report,
|
handle_state_report,
|
||||||
event_filter=callback(
|
|
||||||
lambda event_data: event_data["entity_id"] == self._sensor_source_id
|
|
||||||
),
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue