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.

51 lines
1.3 KiB

from pydantic_settings import BaseSettings
from typing import Optional
class Settings(BaseSettings):
# 项目信息
PROJECT_NAME: str = "期货统一数据平台"
VERSION: str = "0.1.0"
API_PREFIX: str = "/api/v1"
# 数据库配置
DB_HOST: str = "postgres"
DB_PORT: int = 5432
DB_NAME: str = "futures_data"
DB_USER: str = "futures"
DB_PASSWORD: str = "futures123"
DATABASE_URL: str = "" # 直接指定完整 URL支持 sqlite:///
@property
def database_url(self) -> str:
if self.DATABASE_URL:
return self.DATABASE_URL
return f"postgresql://{self.DB_USER}:{self.DB_PASSWORD}@{self.DB_HOST}:{self.DB_PORT}/{self.DB_NAME}"
# Redis 配置
REDIS_HOST: str = "redis"
REDIS_PORT: int = 6379
REDIS_DB: int = 0
REDIS_PASSWORD: Optional[str] = None
@property
def REDIS_URL(self) -> str:
if self.REDIS_PASSWORD:
return f"redis://:{self.REDIS_PASSWORD}@{self.REDIS_HOST}:{self.REDIS_PORT}/{self.REDIS_DB}"
return f"redis://{self.REDIS_HOST}:{self.REDIS_PORT}/{self.REDIS_DB}"
# Tushare 配置
TUSHARE_TOKEN: str = ""
# 服务配置
HOST: str = "0.0.0.0"
PORT: int = 8000
DEBUG: bool = True
class Config:
env_file = ".env"
case_sensitive = True
settings = Settings()