diff --git a/homeassistant/config_entries.py b/homeassistant/config_entries.py index bd83a922df4..864ad90344a 100644 --- a/homeassistant/config_entries.py +++ b/homeassistant/config_entries.py @@ -929,6 +929,8 @@ class ConfigEntry: task = hass.async_create_task( target, f"{name} {self.title} {self.domain} {self.entry_id}", eager_start ) + if task.done(): + return task self._tasks.add(task) task.add_done_callback(self._tasks.remove) @@ -949,6 +951,8 @@ class ConfigEntry: target: target to call. """ task = hass.async_create_background_task(target, name, eager_start) + if task.done(): + return task self._background_tasks.add(task) task.add_done_callback(self._background_tasks.remove) return task diff --git a/homeassistant/core.py b/homeassistant/core.py index 6aaab452e39..47a21f3325b 100644 --- a/homeassistant/core.py +++ b/homeassistant/core.py @@ -637,6 +637,8 @@ class HomeAssistant: """ if eager_start: task = create_eager_task(target, name=name, loop=self.loop) + if task.done(): + return task else: task = self.loop.create_task(target, name=name) self._tasks.add(task) @@ -657,6 +659,8 @@ class HomeAssistant: """ if eager_start: task = create_eager_task(target, name=name, loop=self.loop) + if task.done(): + return task else: task = self.loop.create_task(target, name=name) self._background_tasks.add(task)