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_NAME,
|
||||
CONF_UNIQUE_ID,
|
||||
EVENT_STATE_CHANGED,
|
||||
EVENT_STATE_REPORTED,
|
||||
STATE_UNAVAILABLE,
|
||||
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_registry import DeviceInfo
|
||||
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 .const import (
|
||||
|
@ -440,21 +442,17 @@ class IntegrationSensor(RestoreSensor):
|
|||
self._derive_and_set_attributes_from_state(state)
|
||||
|
||||
self.async_on_remove(
|
||||
self.hass.bus.async_listen(
|
||||
EVENT_STATE_CHANGED,
|
||||
async_track_state_change_event(
|
||||
self.hass,
|
||||
self._sensor_source_id,
|
||||
handle_state_change,
|
||||
event_filter=callback(
|
||||
lambda event_data: event_data["entity_id"] == self._sensor_source_id
|
||||
),
|
||||
)
|
||||
)
|
||||
self.async_on_remove(
|
||||
self.hass.bus.async_listen(
|
||||
EVENT_STATE_REPORTED,
|
||||
async_track_state_reported_event(
|
||||
self.hass,
|
||||
self._sensor_source_id,
|
||||
handle_state_report,
|
||||
event_filter=callback(
|
||||
lambda event_data: event_data["entity_id"] == self._sensor_source_id
|
||||
),
|
||||
)
|
||||
)
|
||||
|
||||
|
|
Loading…
Reference in New Issue