From 101c513aebf2744225a17d51deef27f2a2d98ea4 Mon Sep 17 00:00:00 2001 From: A i <949177929@qq.com> Date: Wed, 28 May 2025 21:50:42 +0800 Subject: [PATCH] Gracefully shutdown uvicorn.Server on task cancellation in run() --- src/mcpo/main.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/mcpo/main.py b/src/mcpo/main.py index d05638c..f61d0d3 100644 --- a/src/mcpo/main.py +++ b/src/mcpo/main.py @@ -2,6 +2,7 @@ import json import os import logging import socket +import asyncio from contextlib import AsyncExitStack, asynccontextmanager from typing import Optional @@ -341,4 +342,9 @@ async def run( ) server = uvicorn.Server(config) - await server.serve() + try: + await server.serve() + except asyncio.CancelledError: + server.should_exit = True + await server.shutdown() + raise