From 42fb3a189e5db984046d8aaf33302cd294cd3012 Mon Sep 17 00:00:00 2001 From: bdhimes Date: Fri, 10 Oct 2025 23:36:05 +0200 Subject: [PATCH] The asyncio queue needs to have its tasks marked done or they grow forever. --- async_substrate_interface/async_substrate.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/async_substrate_interface/async_substrate.py b/async_substrate_interface/async_substrate.py index 0fe3969..105b93a 100644 --- a/async_substrate_interface/async_substrate.py +++ b/async_substrate_interface/async_substrate.py @@ -755,6 +755,7 @@ async def _start_sending(self, ws) -> Exception: try: while True: to_send_ = await self._sending.get() + self._sending.task_done() send_id = to_send_["id"] to_send = json.dumps(to_send_) async with self._lock: @@ -848,7 +849,9 @@ async def retrieve(self, item_id: str) -> Optional[dict]: return res else: try: - return self._received_subscriptions[item_id].get_nowait() + subscription = self._received_subscriptions[item_id].get_nowait() + self._received_subscriptions[item_id].task_done() + return subscription except asyncio.QueueEmpty: pass if self._send_recv_task is not None and self._send_recv_task.done():