From 753a16ab8e18cbc7e73bc6cc39279e91b619c706 Mon Sep 17 00:00:00 2001 From: linuswck Date: Tue, 21 Jan 2025 11:11:16 +0800 Subject: [PATCH] driver: Close incoming awaitable fn if queue is full --- pykirdy/driver/kirdy.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pykirdy/driver/kirdy.py b/pykirdy/driver/kirdy.py index d67dd24..7f6aa11 100644 --- a/pykirdy/driver/kirdy.py +++ b/pykirdy/driver/kirdy.py @@ -742,11 +742,12 @@ class Kirdy: Enqueue a task to be handled by the handler. """ if self.connected(): - try: + if self._task_queue.full(): + awaitable_fn.close() + return False + else: self._task_queue.put_nowait(lambda: awaitable_fn) return True - except asyncio.queues.QueueFull: - return False else: raise ConnectionError @@ -861,7 +862,8 @@ class Kirdy: async def __coninit(self, timeout): def _put_nowait_overwrite(self, item): if self.full(): - self.get_nowait() + awaitable_fn = self.get_nowait() + awaitable_fn.close() self.put_nowait(item) asyncio.Queue.put_nowait_overwrite = _put_nowait_overwrite