aidress/run.py
2025-03-21 17:06:54 +08:00

105 lines
3.6 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.

import uvicorn
import logging
import sys
import os
from app.utils.config import get_settings, validate_api_key, validate_qcloud_config
from app.database import engine
def check_dependencies():
"""检查依赖项是否正确安装"""
try:
import dashscope
print(f"已加载 DashScope 版本: {getattr(dashscope, '__version__', '未知')}")
except ImportError as e:
print(f"错误: 无法导入 dashscope 模块: {str(e)}")
print("请确保已正确安装 dashscope: pip install -U dashscope")
return False
try:
from qcloud_cos import CosConfig
print("已加载腾讯云 COS SDK")
except ImportError as e:
print(f"警告: 无法导入腾讯云 COS SDK: {str(e)}")
print("腾讯云 COS 相关功能可能无法使用")
print("请确保已正确安装: pip install -U cos-python-sdk-v5 qcloud-python-sts")
try:
import sqlalchemy
print(f"已加载 SQLAlchemy 版本: {sqlalchemy.__version__}")
import pymysql
print(f"已加载 PyMySQL 版本: {pymysql.__version__}")
except ImportError as e:
print(f"错误: 无法导入数据库模块: {str(e)}")
print("请确保已正确安装: pip install -U sqlalchemy pymysql")
return False
return True
def check_database_connection():
"""检查数据库连接"""
try:
settings = get_settings()
# 尝试连接数据库
with engine.connect() as connection:
print(f"成功连接到数据库: {settings.db_name}")
return True
except Exception as e:
print(f"警告: 无法连接到数据库: {str(e)}")
print("请确保MySQL服务已启动并且数据库配置正确")
print("您可以使用以下命令创建数据库:")
settings = get_settings()
print(f"CREATE DATABASE {settings.db_name} CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;")
print(f"GRANT ALL PRIVILEGES ON {settings.db_name}.* TO '{settings.db_user}'@'%' IDENTIFIED BY '{settings.db_password}';")
print("FLUSH PRIVILEGES;")
# 询问是否继续
if input("是否继续启动应用程序?(y/n): ").lower() not in ["y", "yes"]:
return False
return True
if __name__ == "__main__":
try:
# 检查依赖项
if not check_dependencies():
sys.exit(1)
# 验证API密钥是否配置
validate_api_key()
# 验证腾讯云配置
try:
validate_qcloud_config()
print("腾讯云COS配置已验证")
except ValueError as e:
print(f"警告: {str(e)}")
print("腾讯云COS相关功能可能无法正常使用但应用程序将继续启动")
# 检查数据库连接
if not check_database_connection():
sys.exit(1)
# 获取配置
settings = get_settings()
# 配置日志级别
log_level = getattr(logging, settings.log_level.upper(), logging.INFO)
logging.basicConfig(level=log_level)
# 启动服务器
print(f"启动服务,访问地址: http://{settings.host}:{settings.port}")
uvicorn.run(
"app.main:app",
host=settings.host,
port=settings.port,
reload=settings.debug,
log_level=settings.log_level.lower()
)
except Exception as e:
logging.error(f"启动失败: {str(e)}")
if hasattr(e, "__traceback__"):
import traceback
traceback.print_exception(type(e), e, e.__traceback__)
exit(1)