- 统一设置系统:create_scheduler_service 读取 DB 设置覆盖默认值 - 修复 ProxyRepository.update_score 误删所有无效代理的 SQL - ValidationQueue:修复 Worker 计数漂移与启动恢复任务饿死 - SchedulerService:移除 drain() 阻塞,主循环可正常响应 stop - TaskService:在调度器周期内自动清理过期任务,防止内存泄漏 - lifespan/conftest:规范关闭顺序,消除 Event loop closed 警告 - Repository:异常日志增加 exc_info,今日新增按 created_at 统计 - ValidatorService:防止 HTTP session 重复关闭,移除 SOCKS 多余 close - 前端:补全 pluginsStore.isEmpty,ProxyList 最低分数上限改为 100 - 删除 config.py 中冗余的 cors_origins_list property
61 lines
1.4 KiB
Python
61 lines
1.4 KiB
Python
"""全局配置 - 使用 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 = 9949
|
|
|
|
# 验证器配置
|
|
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
|
|
|
|
# 插件配置
|
|
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()
|