""" 测试数据库和缓存连接以及 FastAPI 应用加载 使用方法:python test_connection.py """ import sys print("=" * 60) print("🔍 Hot News Main - 系统连接测试") print("=" * 60) # 测试 1: FastAPI 应用加载 print("\n📋 测试 1: FastAPI 应用加载...") try: from app.main import app print("✅ FastAPI 应用加载成功!") print(f" - 应用标题:{app.title}") print(f" - Swagger UI: /docs") print(f" - ReDoc: /redoc") except Exception as e: print(f"❌ FastAPI 应用加载失败:{e}") import traceback traceback.print_exc() sys.exit(1) # 测试 2: Redis 连接 print("\n📋 测试 2: Redis 连接...") try: import redis r = redis.Redis(host='localhost', port=6379, db=0) r.ping() print("✅ Redis 连接成功!") print(" - Host: localhost") print(" - Port: 6379") except Exception as e: print(f"❌ Redis 连接失败:{e}") print("\n💡 解决方案:") print(" 方式 1 (Docker):") print(" docker run -d -p 6379:6379 --name redis redis:latest") print("\n 方式 2 (WSL):") print(" wsl sudo service redis-server start") print("\n 方式 3 (Windows 原生):") print(" 下载并运行 redis-server.exe") # 测试 3: MySQL 连接 print("\n📋 测试 3: MySQL 连接...") try: # 尝试从配置中读取 from app.core.config import get_config config = get_config() import pymysql conn = pymysql.connect( host=config.database.host, user=config.database.user, password=config.database.password, database=config.database.db, charset=config.database.charset ) print("✅ MySQL 连接成功!") print(f" - Host: {config.database.host}") print(f" - Database: {config.database.db}") print(f" - User: {config.database.user}") conn.close() except Exception as e: print(f"❌ MySQL 连接失败:{e}") print("\n💡 解决方案:") print(" 1. 检查 MySQL 服务是否启动") print(" 2. 检查 config/config.yaml 中的数据库配置") print(" 3. 创建数据库:CREATE DATABASE hot_news CHARACTER SET utf8mb4;") # 测试 4: OpenAPI Schema 生成 print("\n📋 测试 4: OpenAPI Schema 生成...") try: schema = app.openapi() paths = list(schema['paths'].keys()) print(f"✅ OpenAPI Schema 生成成功!") print(f" - API 路径数量:{len(paths)}") print(f" - 部分路径示例:") for path in paths[:5]: print(f" • {path}") if len(paths) > 5: print(f" ... 还有 {len(paths) - 5} 条路径") except Exception as e: print(f"❌ OpenAPI Schema 生成失败:{e}") import traceback traceback.print_exc() print("\n" + "=" * 60) print("📊 测试结果汇总") print("=" * 60) print(""" ✅ FastAPI 应用已修复,可以正常加载 ⚠️ Redis 和 MySQL 需要手动启动(如果未运行) 🚀 下一步操作: 1. 如果 Redis/MySQL 未启动,请参考 TROUBLESHOOTING.md 启动服务 2. 启动应用:python run.py 3. 访问 Swagger 文档:http://localhost:8000/docs """)