fixes task manager notifications

This commit is contained in:
Mose Müller 2023-12-04 08:25:19 +01:00
parent a7ec7c1536
commit 06e642972f

View File

@ -86,12 +86,6 @@ class TaskManager:
its kwargs. its kwargs.
""" """
self.task_status_change_callbacks: list[
Callable[[str, dict[str, Any] | None], Any]
] = []
"""A list of callback functions to be invoked when the status of a task (start
or stop) changes."""
self._set_start_and_stop_for_async_methods() self._set_start_and_stop_for_async_methods()
def _set_start_and_stop_for_async_methods(self) -> None: def _set_start_and_stop_for_async_methods(self) -> None:
@ -145,7 +139,7 @@ class TaskManager:
return stop_task return stop_task
def _make_start_task( # noqa: C901 def _make_start_task(
self, name: str, method: Callable[..., Any] self, name: str, method: Callable[..., Any]
) -> Callable[..., Any]: ) -> Callable[..., Any]:
""" """
@ -161,7 +155,7 @@ class TaskManager:
""" """
@wraps(method) @wraps(method)
def start_task(*args: Any, **kwargs: Any) -> None: # noqa: C901 def start_task(*args: Any, **kwargs: Any) -> None:
def task_done_callback(task: asyncio.Task[None], name: str) -> None: def task_done_callback(task: asyncio.Task[None], name: str) -> None:
"""Handles tasks that have finished. """Handles tasks that have finished.
@ -172,8 +166,7 @@ class TaskManager:
self.tasks.pop(name, None) self.tasks.pop(name, None)
# emit the notification that the task was stopped # emit the notification that the task was stopped
for callback in self.task_status_change_callbacks: self.service._notify_changed(name, None)
callback(name, None)
exception = task.exception() exception = task.exception()
if exception is not None: if exception is not None:
@ -229,8 +222,7 @@ class TaskManager:
} }
# emit the notification that the task was started # emit the notification that the task was started
for callback in self.task_status_change_callbacks: self.service._notify_changed(name, kwargs_updated)
callback(name, kwargs_updated)
else: else:
logger.error("Task '%s' is already running!", name) logger.error("Task '%s' is already running!", name)