Files
hot-news-api/test_connection.py
2026-03-26 15:42:37 +08:00

101 lines
3.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
测试数据库和缓存连接以及 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
""")