From 3a863c4a0f2dfff8dc4eabd9bc15d308af8e1290 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Fri, 9 Oct 2020 02:35:09 -0500 Subject: [PATCH] Fully convert async_track_time_interval to use HassJob (#41513) The callback type for interval_listener was being determined each time the interval hit. This was missed in the original conversion. --- homeassistant/helpers/event.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/homeassistant/helpers/event.py b/homeassistant/helpers/event.py index 2bc6f77664d..94921088bab 100644 --- a/homeassistant/helpers/event.py +++ b/homeassistant/helpers/event.py @@ -1095,6 +1095,7 @@ def async_track_time_interval( ) -> CALLBACK_TYPE: """Add a listener that fires repetitively at every timedelta interval.""" remove = None + interval_listener_job = None job = HassJob(action) @@ -1106,14 +1107,19 @@ def async_track_time_interval( def interval_listener(now: datetime) -> None: """Handle elapsed intervals.""" nonlocal remove - remove = async_track_point_in_utc_time(hass, interval_listener, next_interval()) + nonlocal interval_listener_job + + remove = async_track_point_in_utc_time( + hass, interval_listener_job, next_interval() # type: ignore + ) hass.async_run_hass_job(job, now) - remove = async_track_point_in_utc_time(hass, interval_listener, next_interval()) + interval_listener_job = HassJob(interval_listener) + remove = async_track_point_in_utc_time(hass, interval_listener_job, next_interval()) def remove_listener() -> None: """Remove interval listener.""" - remove() + remove() # type: ignore return remove_listener