diff --git a/private_gpt/components/streaming/tasks/task_manager.py b/private_gpt/components/streaming/tasks/task_manager.py index 6ddab629..15945fa3 100644 --- a/private_gpt/components/streaming/tasks/task_manager.py +++ b/private_gpt/components/streaming/tasks/task_manager.py @@ -54,7 +54,7 @@ class TaskManager: token = self._cancellation_tokens.get(correlation_id) return token is not None and token.is_set() - async def cancel_task(self, correlation_id: str, timeout: float = 2.0) -> bool: + async def cancel_task(self, correlation_id: str) -> bool: """Cancel a task and wait for completion.""" if correlation_id in self._cancellation_tokens: self._cancellation_tokens[correlation_id].set() @@ -65,16 +65,16 @@ class TaskManager: task.cancel() - with contextlib.suppress(TimeoutError, asyncio.CancelledError): - await asyncio.wait_for(task, timeout=timeout) + with contextlib.suppress(asyncio.CancelledError): + await task return True - async def cancel(self, correlation_id: str, timeout: float = 2.0) -> bool: + async def cancel(self, correlation_id: str) -> bool: from private_gpt.server.chat.chat_service import ChatService chat_service = get_global_injector().get(ChatService) - success = await self.cancel_task(correlation_id, timeout=timeout) + success = await self.cancel_task(correlation_id) scheduled_cancel = await chat_service.cancel(correlation_id) return success or scheduled_cancel diff --git a/tests/server/chat/test_chat_routes.py b/tests/server/chat/test_chat_routes.py index b1884f9e..bdfd8fde 100644 --- a/tests/server/chat/test_chat_routes.py +++ b/tests/server/chat/test_chat_routes.py @@ -2232,14 +2232,10 @@ async def test_chat_cancels_llm_astream_on_client_disconnection( with pytest.raises(asyncio.CancelledError): await request_task - try: - await asyncio.wait_for(llm_generator_closed.wait(), timeout=5.0) - except TimeoutError: - pytest.fail( - "LLM astream_chat_with_tools generator was not closed after client disconnection" - ) - - assert llm_generator_closed.is_set() + assert llm_generator_closed.is_set(), ( + "LLM astream_chat_with_tools generator was not closed before request " + "cancellation completed" + ) @pytest.mark.anyio