From 268be74a84b64e853494bb14f3f163911410ead6 Mon Sep 17 00:00:00 2001 From: Katelyn Gigante Date: Tue, 7 Oct 2025 15:18:35 +1100 Subject: [PATCH] fix: Hold running tasks within a Task, so the task doesn't get garbage collected before it completes --- interactions/models/internal/tasks/task.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/interactions/models/internal/tasks/task.py b/interactions/models/internal/tasks/task.py index cd14e2c6c..82bbabc35 100644 --- a/interactions/models/internal/tasks/task.py +++ b/interactions/models/internal/tasks/task.py @@ -96,6 +96,7 @@ def _fire(self, fire_time: datetime, *args, **kwargs) -> asyncio.Task: async def _task_loop(self, *args, **kwargs) -> None: """The main task loop to fire the task at the specified time based on triggers configured.""" + running = set() while not self._stop.is_set(): fire_time = self.trigger.next_fire() if fire_time is None: @@ -107,7 +108,9 @@ async def _task_loop(self, *args, **kwargs) -> None: if future in done: return None - self._fire(fire_time, *args, **kwargs) + task = self._fire(fire_time, *args, **kwargs) + running.add(task) + task.add_done_callback(running.discard) def start(self, *args, **kwargs) -> None: """Start this task."""