101 lines
3.1 KiB
Python
101 lines
3.1 KiB
Python
"""
|
||
测试数据库和缓存连接以及 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
|
||
""")
|