driver: Close incoming awaitable fn if queue is full

This commit is contained in:
linuswck 2025-01-21 11:11:16 +08:00
parent 76a19cb65a
commit 753a16ab8e

View File

@ -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