"""全局配置 - 使用 Pydantic Settings 支持环境变量和 .env 文件""" import os from typing import List from pydantic_settings import BaseSettings, SettingsConfigDict class Settings(BaseSettings): model_config = SettingsConfigDict( env_file=".env", env_file_encoding="utf-8", extra="ignore", ) # 数据库配置 db_path: str = "db/proxies.sqlite" # API 服务配置 host: str = "127.0.0.1" port: int = 18080 # 验证器配置 validator_timeout: int = 5 validator_max_concurrency: int = 200 validator_connect_timeout: int = 3 # 爬虫配置 crawler_num_validators: int = 50 crawler_max_queue_size: int = 500 # 日志配置 log_level: str = "INFO" log_dir: str = "logs" # 导出配置 export_max_records: int = 10000 # 代理评分配置 score_valid: int = 10 score_invalid: int = -5 score_min: int = 0 score_max: int = 100 # 验证目标配置 validator_test_urls: List[str] = [ "http://httpbin.org/ip", "https://httpbin.org/ip", "http://api.ipify.org", "https://api.ipify.org", "http://www.baidu.com", "http://www.qq.com", ] # 插件配置 plugins_dir: str = "plugins" # CORS 配置 - Pydantic v2 会自动将逗号分隔的字符串解析为 List[str] cors_origins: List[str] = [ "http://localhost:8080", "http://localhost:5173", "http://127.0.0.1:18081", "http://localhost:18081", ] @property def base_dir(self) -> str: return os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) # 全局配置实例(启动时加载一次) settings = Settings()