From a431c339d9c3e9108ab30a45cdedea7d75d72d96 Mon Sep 17 00:00:00 2001 From: DABND19 Date: Mon, 13 May 2024 17:14:10 +0300 Subject: [PATCH] fix: Uvicorn graceful shutdown. --- aiomisc/service/uvicorn.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/aiomisc/service/uvicorn.py b/aiomisc/service/uvicorn.py index 4b64137f..182a2bd7 100644 --- a/aiomisc/service/uvicorn.py +++ b/aiomisc/service/uvicorn.py @@ -24,6 +24,7 @@ class UvicornService(Service, abc.ABC): __async_required__: Tuple[str, ...] = ( "start", + "stop", "create_application", ) @@ -114,8 +115,11 @@ async def start(self) -> Any: ) if not self.sock: self.sock = config.bind_socket() - server = Server(config) - - self.start_event.set() + self.server = Server(config) + self.serve_task = asyncio.create_task( + self.server.serve(sockets=[self.sock]) + ) - await server.serve(sockets=[self.sock]) + async def stop(self, exception: Optional[Exception] = None) -> None: + self.server.should_exit = True + await self.serve_task