You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.3 KiB
55 lines
1.3 KiB
|
2 months ago
|
"""
|
||
|
|
应用配置模块
|
||
|
|
"""
|
||
|
|
import os
|
||
|
|
from typing import Optional
|
||
|
|
from pydantic_settings import BaseSettings
|
||
|
|
from pydantic import Field
|
||
|
|
|
||
|
|
|
||
|
|
class Settings(BaseSettings):
|
||
|
|
"""应用配置类"""
|
||
|
|
|
||
|
|
# 应用配置
|
||
|
|
APP_NAME: str = "AmazingData金融数据服务平台"
|
||
|
|
APP_VERSION: str = "1.0.0"
|
||
|
|
DEBUG: bool = Field(default=True, env="DEBUG")
|
||
|
|
|
||
|
|
# 数据库配置 - 使用SQLite简化演示
|
||
|
|
DATABASE_URL: str = Field(
|
||
|
|
default="sqlite:///./amazing_data.db",
|
||
|
|
env="DATABASE_URL"
|
||
|
|
)
|
||
|
|
|
||
|
|
# Redis配置
|
||
|
|
REDIS_URL: str = Field(
|
||
|
|
default="redis://localhost:6379/0",
|
||
|
|
env="REDIS_URL"
|
||
|
|
)
|
||
|
|
|
||
|
|
# JWT配置
|
||
|
|
SECRET_KEY: str = Field(
|
||
|
|
default="your-secret-key-change-in-production",
|
||
|
|
env="SECRET_KEY"
|
||
|
|
)
|
||
|
|
ACCESS_TOKEN_EXPIRE_HOURS: int = Field(default=24, env="ACCESS_TOKEN_EXPIRE_HOURS")
|
||
|
|
ALGORITHM: str = "HS256"
|
||
|
|
|
||
|
|
# 缓存配置
|
||
|
|
CACHE_DEFAULT_PERIOD: str = "daily"
|
||
|
|
CACHE_DEFAULT_DAYS: int = 365
|
||
|
|
CACHE_AUTO_CLEANUP_DAYS: int = 7
|
||
|
|
CACHE_BATCH_SIZE: int = 100
|
||
|
|
CACHE_MISSING_THRESHOLD: float = 0.1
|
||
|
|
|
||
|
|
# 实时数据配置
|
||
|
|
REALTIME_SUBSCRIBE_INTERVAL: int = 1000
|
||
|
|
|
||
|
|
class Config:
|
||
|
|
env_file = ".env"
|
||
|
|
case_sensitive = True
|
||
|
|
|
||
|
|
|
||
|
|
# 全局配置实例
|
||
|
|
settings = Settings()
|