Open
Description
The can rx message handler in class Notifier
is creating tasks when runs in async mode and gets a coroutine callback.
Lines 143 to 148 in 5d62394
However the python docs is clear that the reference to the task needs to be kept to ensure its not garbage collected: https://docs.python.org/3/library/asyncio-task.html#asyncio.create_task
The fix should be fairly straight forward:
def _on_message_received(self, msg: Message) -> None:
for callback in self.listeners:
res = callback(msg)
if res and self._loop and asyncio.iscoroutine(res):
# Schedule coroutine
# In __init__: self._tasks: set[asyncio.Task] = set()
task = self._loop.create_task(res)
self._tasks.add(task)
task.add_done_callback(self._tasks.discard)