服务启动的bug修复:算力差异

问题

(solara3142)D:\codeOC\OMORepos\kc_portfolio_manager>python -m app.web.asgi
Starting combined app on http://127.0.0.1:8000 ...
INFO:     Started server process [30516]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
ERROR:    Traceback (most recent call last):
  File "D:\codePython\python\anaconda3\solara3142\Lib\site-packages\starlette\routing.py", line 701, in lifespan
    await receive()
  File "D:\codePython\python\anaconda3\solara3142\Lib\site-packages\uvicorn\lifespan\on.py", line 137, in receive
    return await self.receive_queue.get()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\codePython\python\anaconda3\solara3142\Lib\asyncio\queues.py", line 186, in get
    await getter
asyncio.exceptions.CancelledError

本地Qwen3.6-35B-A3B答案

从你的输出可以看到:

✅ curl 127.0.0.1:8000 → 返回了 HTML(Web UI 正常)
✅ python -m app.web.asgi → 成功启动并返回 200 OK
关于 ERROR 的说明
那个 asyncio.exceptions.CancelledError 不是错误,是正常的关闭行为。

当你在终端中按 Ctrl+C 停止服务时:

Uvicorn 尝试优雅关闭
在等待生命周期事件接收时收到取消信号
抛出 CancelledError(这是 asyncio 的正常行为)
Uvicorn 捕获并正常退出
这不是 bug,不需要修复。 你可以看到后面有正常的关闭日志:

INFO:     Shutting down
INFO:     Waiting for application shutdown.
INFO:     Application shutdown complete.
INFO:     Finished server process [33704]

商业算力 Kimi K2.6

问题已解决!
原因:CombinedASGIApp 类缺少 ASGI Lifespan 协议处理。当 Uvicorn 发送生命周期事件(startup/shutdown)时,应用没有响应,导致抛出 CancelledError。

修复内容:在 __call__ 方法中添加了 lifespan 消息处理:
。。。
验证结果:

✅ 服务器正常启动,无 ERROR
✅ GET / 返回 200 OK(HTML)
✅ 关闭时干净退出
需要同步到你的 Windows 环境
请确保你的 D:\codeOC\OMORepos\kc_portfolio_manager\app\web\asgi.py 文件第24-36行包含上述 lifespan 处理代码。如果没有,请添加
。。。。