From 192a5e5e642a70b9637224d3fed6e5f28c6bb196 Mon Sep 17 00:00:00 2001 From: Sergey Akentev Date: Fri, 6 Oct 2023 23:43:21 +0300 Subject: [PATCH] Fix `_process_polling_updates` being garbage collected (#1328) --- aiogram/dispatcher/dispatcher.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/aiogram/dispatcher/dispatcher.py b/aiogram/dispatcher/dispatcher.py index 22f6700c..a89aa14d 100644 --- a/aiogram/dispatcher/dispatcher.py +++ b/aiogram/dispatcher/dispatcher.py @@ -88,6 +88,7 @@ class Dispatcher(DataMixin, ContextInstanceMixin): self._polling = False self._closed = True self._dispatcher_close_waiter = None + self._polling_tasks = set() self._setup_filters() @@ -395,7 +396,9 @@ class Dispatcher(DataMixin, ContextInstanceMixin): log.debug(f"Received {len(updates)} updates.") offset = updates[-1].update_id + 1 - asyncio.create_task(self._process_polling_updates(updates, fast)) + polling_task = asyncio.create_task(self._process_polling_updates(updates, fast)) + self._polling_tasks.add(polling_task) + polling_task.add_done_callback(self._polling_tasks.discard) if relax: await asyncio.sleep(relax)