初始化代码

This commit is contained in:
wzy-warehouse
2026-05-08 15:42:32 +08:00
parent 7d18effcfe
commit 4ef23fec7c
26 changed files with 140 additions and 2263 deletions
-48
View File
@@ -1,48 +0,0 @@
"""
基础配置类
"""
from pydantic_settings import BaseSettings
from enum import Enum
class EnvironmentEnum(str, Enum):
"""环境枚举"""
DEVELOPMENT = "development"
PRODUCTION = "production"
class BaseConfig(BaseSettings):
"""基础配置类"""
# 应用基本信息
APP_NAME: str = "西安项目算法"
APP_VERSION: str = "1.0.0"
ENVIRONMENT: EnvironmentEnum = EnvironmentEnum.DEVELOPMENT
# 调试模式
DEBUG: bool = True
# API配置
API_HOST: str = "127.0.0.1" # 默认只监听本地
API_PORT: int = 8000
# CORS配置(默认只允许localhost
CORS_ORIGINS: list = ["http://localhost", "http://127.0.0.1"]
# 日志配置
LOG_LEVEL: str = "INFO"
LOG_DIR: str = "logs"
class Config:
env_file = ".env.development" # 默认使用开发环境配置
case_sensitive = True
@property
def is_development(self) -> bool:
"""是否为开发环境"""
return self.ENVIRONMENT == EnvironmentEnum.DEVELOPMENT
@property
def is_production(self) -> bool:
"""是否为生产环境"""
return self.ENVIRONMENT == EnvironmentEnum.PRODUCTION
-37
View File
@@ -1,37 +0,0 @@
"""
数据库配置
"""
from .base_config import BaseConfig
class DatabaseConfig(BaseConfig):
"""数据库配置类"""
# PostgreSQL配置
DB_HOST: str = "localhost"
DB_PORT: int = 5432
DB_USER: str = "postgres"
DB_PASSWORD: str = "postgres"
DB_NAME: str = "test_db"
# 连接池配置
DB_POOL_SIZE: int = 10
DB_MAX_OVERFLOW: int = 20
DB_POOL_TIMEOUT: int = 30
DB_POOL_RECYCLE: int = 3600
@property
def DATABASE_URL(self) -> str:
"""构建数据库连接URL"""
return (
f"postgresql://{self.DB_USER}:{self.DB_PASSWORD}"
f"@{self.DB_HOST}:{self.DB_PORT}/{self.DB_NAME}"
)
@property
def ASYNC_DATABASE_URL(self) -> str:
"""构建异步数据库连接URL"""
return (
f"postgresql+asyncpg://{self.DB_USER}:{self.DB_PASSWORD}"
f"@{self.DB_HOST}:{self.DB_PORT}/{self.DB_NAME}"
)
-22
View File
@@ -1,22 +0,0 @@
"""
开发环境配置
"""
from .database_config import DatabaseConfig
from .base_config import EnvironmentEnum
class DevelopmentConfig(DatabaseConfig):
"""开发环境配置 - 只覆盖与生产不同的配置"""
ENVIRONMENT: EnvironmentEnum = EnvironmentEnum.DEVELOPMENT
# 调试和日志
DEBUG: bool = True
LOG_LEVEL: str = "DEBUG"
# 开发特性
RELOAD: bool = True
class Config:
env_file = ".env.development"
case_sensitive = True
-26
View File
@@ -1,26 +0,0 @@
"""
生产环境配置
"""
from .database_config import DatabaseConfig
from .base_config import EnvironmentEnum
class ProductionConfig(DatabaseConfig):
"""生产环境配置 - 只覆盖性能和安全相关配置"""
ENVIRONMENT: EnvironmentEnum = EnvironmentEnum.PRODUCTION
# 调试和日志
DEBUG: bool = False
LOG_LEVEL: str = "WARNING"
# 生产特性
RELOAD: bool = False
# 数据库连接池(生产环境需要更大)
DB_POOL_SIZE: int = 20
DB_MAX_OVERFLOW: int = 40
class Config:
env_file = ".env.production"
case_sensitive = True
-65
View File
@@ -1,65 +0,0 @@
"""
配置加载器 - 根据环境自动加载对应配置
"""
import os
from typing import Type
from .base_config import BaseConfig, EnvironmentEnum
from .development import DevelopmentConfig
from .production import ProductionConfig
def get_config_class(environment: str = None) -> Type[BaseConfig]:
"""根据环境获取配置类
Args:
environment: 环境名称 (development/production)
Returns:
对应的配置类
"""
if environment is None:
environment = os.getenv("ENVIRONMENT", "development")
config_map = {
EnvironmentEnum.DEVELOPMENT: DevelopmentConfig,
EnvironmentEnum.PRODUCTION: ProductionConfig,
}
try:
env_enum = EnvironmentEnum(environment)
return config_map[env_enum]
except ValueError:
print(f"警告: 未知环境 '{environment}',使用默认开发环境配置")
return DevelopmentConfig
def load_config(environment: str = None) -> BaseConfig:
"""加载配置
Args:
environment: 环境名称
Returns:
配置实例
"""
config_class = get_config_class(environment)
return config_class()
# 全局配置实例(延迟加载)
_config_instance = None
def get_settings() -> BaseConfig:
"""获取全局配置实例(单例模式)"""
global _config_instance
if _config_instance is None:
environment = os.getenv("ENVIRONMENT", None)
_config_instance = load_config(environment)
return _config_instance
def reload_config(environment: str = None):
"""重新加载配置"""
global _config_instance
_config_instance = load_config(environment)