#!/usr/bin/env python3 """ 测试服务器运行 """ import asyncio import sys import os import signal import time # 添加项目根目录到Python路径 sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) from app.core.app.factory import create_development_app from app.utils.structured_log import get_structured_logger, LogLevel import uvicorn logger = get_structured_logger(__name__, LogLevel.INFO) def signal_handler(signum, frame): """信号处理器""" logger.info(f"收到信号 {signum},正在关闭服务器...") sys.exit(0) async def test_server(): """测试服务器运行""" try: logger.info("开始测试服务器运行") # 注册信号处理器 signal.signal(signal.SIGINT, signal_handler) signal.signal(signal.SIGTERM, signal_handler) # 创建应用 app = create_development_app() logger.info("应用创建成功") # 启动服务器(在后台运行5秒) logger.info("启动服务器,运行5秒后自动关闭") # 使用uvicorn启动服务器 config = uvicorn.Config( app=app, host="127.0.0.1", port=8000, log_level="info" ) server = uvicorn.Server(config) # 在后台运行服务器 server_task = asyncio.create_task(server.serve()) # 等待5秒 await asyncio.sleep(5) # 停止服务器 logger.info("停止服务器") server.should_exit = True await server_task logger.info("服务器测试完成") return True except Exception as e: logger.error(f"服务器测试失败: {e}") import traceback logger.error(f"异常堆栈: {traceback.format_exc()}") return False if __name__ == "__main__": success = asyncio.run(test_server()) if success: print("✅ 服务器测试成功") sys.exit(0) else: print("❌ 服务器测试失败") sys.exit(1)