From ff469cb59262d30fd2cb03755bb96164c45ecd1a Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 16 Apr 2020 16:44:14 -0700 Subject: [PATCH] Update Coordinator: Only schedule a refresh if listenerrs (#34317) --- homeassistant/helpers/update_coordinator.py | 3 ++- tests/helpers/test_update_coordinator.py | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/homeassistant/helpers/update_coordinator.py b/homeassistant/helpers/update_coordinator.py index d9a79d6555c..7fb96fdf7c8 100644 --- a/homeassistant/helpers/update_coordinator.py +++ b/homeassistant/helpers/update_coordinator.py @@ -170,7 +170,8 @@ class DataUpdateCoordinator: self.name, monotonic() - start, ) - self._schedule_refresh() + if self._listeners: + self._schedule_refresh() for update_callback in self._listeners: update_callback() diff --git a/tests/helpers/test_update_coordinator.py b/tests/helpers/test_update_coordinator.py index 17caa1f7478..897367619ed 100644 --- a/tests/helpers/test_update_coordinator.py +++ b/tests/helpers/test_update_coordinator.py @@ -41,6 +41,8 @@ async def test_async_refresh(crd): await crd.async_refresh() assert crd.data == 1 assert crd.last_update_success is True + # Make sure we didn't schedule a refresh because we have 0 listeners + assert crd._unsub_refresh is None updates = [] @@ -50,6 +52,7 @@ async def test_async_refresh(crd): unsub = crd.async_add_listener(update_callback) await crd.async_refresh() assert updates == [2] + assert crd._unsub_refresh is not None # Test unsubscribing through function unsub()