Pycharm debug模式异常

https://gitee.com/aohanhongzhi/xianyu-auto-reply/issues/ID3UXR
This commit is contained in:
捕风的逍遥侯 2025-10-28 22:31:33 +08:00
parent 9e7d5f0d7a
commit cd502a2e2e

View File

@ -143,7 +143,23 @@ def _start_api_server():
port = parsed.port or 8080
logger.info(f"启动Web服务器: http://{host}:{port}")
uvicorn.run("reply_server:app", host=host, port=port, log_level="info")
# 在后台线程中创建独立事件循环并直接运行 server.serve()
import uvicorn
try:
config = uvicorn.Config("reply_server:app", host=host, port=port, log_level="info")
server = uvicorn.Server(config)
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
loop.run_until_complete(server.serve())
except Exception as e:
logger.error(f"uvicorn服务器启动失败: {e}")
try:
# 确保线程内事件循环被正确关闭
loop = asyncio.get_event_loop()
if loop.is_running():
loop.stop()
except Exception:
pass
@ -248,4 +264,16 @@ async def main():
if __name__ == '__main__':
asyncio.run(main())
# 避免使用被monkey patch的asyncio.run()
# 使用原生的事件循环管理方式
try:
loop = asyncio.get_event_loop()
if loop.is_running():
# 如果事件循环已经在运行,创建任务
asyncio.create_task(main())
else:
# 正常启动事件循环
loop.run_until_complete(main())
except RuntimeError:
# 如果没有事件循环,创建一个新的
asyncio.run(main())