refactor: 系统优化配置从硬编码改为持久化
- SystemOptimizer 启动时从 system_settings.json 加载 rate_limits/cost_limits/security_settings - 硬编码值仅作为 fallback(配置文件不存在或字段缺失时使用) - security-settings/traffic-settings/cost-settings 三个 API 端点重写: - GET 从 system_settings.json 读取实际值(不再返回假数据) - POST 写入 system_settings.json(不再丢弃数据) - 新增 _read_system_settings/_save_system_settings 工具函数
This commit is contained in:
@@ -30,31 +30,36 @@ class SystemOptimizer:
|
||||
self.request_counts = defaultdict(int)
|
||||
self.response_times = deque(maxlen=1000)
|
||||
|
||||
# 流量控制
|
||||
self.rate_limits = {
|
||||
"per_minute": 60, # 每分钟最大请求数
|
||||
"per_hour": 1000, # 每小时最大请求数
|
||||
"per_day": 10000 # 每天最大请求数
|
||||
}
|
||||
|
||||
# 成本控制
|
||||
self.cost_limits = {
|
||||
"daily": 100.0, # 每日成本限制(元)
|
||||
"hourly": 20.0, # 每小时成本限制(元)
|
||||
"per_request": 0.1 # 单次请求成本限制(元)
|
||||
}
|
||||
|
||||
# 安全设置
|
||||
self.security_settings = {
|
||||
"max_input_length": 10000, # 最大输入长度
|
||||
"max_output_length": 5000, # 最大输出长度
|
||||
"blocked_keywords": ["恶意", "攻击", "病毒"], # 屏蔽关键词
|
||||
"max_concurrent_users": 50 # 最大并发用户数(调整为更合理的值)
|
||||
}
|
||||
# 从系统设置加载配置,硬编码值仅作为 fallback
|
||||
self._load_settings()
|
||||
|
||||
# 延迟启动监控线程(避免启动时阻塞)
|
||||
threading.Timer(5.0, self._start_monitoring).start()
|
||||
|
||||
def _load_settings(self):
|
||||
"""从 system_settings.json 加载配置,未配置则使用默认值"""
|
||||
import json, os
|
||||
defaults_rate = {"per_minute": 60, "per_hour": 1000, "per_day": 10000}
|
||||
defaults_cost = {"daily": 100.0, "hourly": 20.0, "per_request": 0.1}
|
||||
defaults_security = {
|
||||
"max_input_length": 10000, "max_output_length": 5000,
|
||||
"blocked_keywords": [], "max_concurrent_users": 50
|
||||
}
|
||||
try:
|
||||
settings_path = os.path.join('data', 'system_settings.json')
|
||||
if os.path.exists(settings_path):
|
||||
with open(settings_path, 'r', encoding='utf-8') as f:
|
||||
settings = json.load(f)
|
||||
self.rate_limits = {**defaults_rate, **settings.get('rate_limits', {})}
|
||||
self.cost_limits = {**defaults_cost, **settings.get('cost_limits', {})}
|
||||
self.security_settings = {**defaults_security, **settings.get('security_settings', {})}
|
||||
return
|
||||
except Exception as e:
|
||||
logger.warning(f"加载系统优化配置失败,使用默认值: {e}")
|
||||
self.rate_limits = defaults_rate
|
||||
self.cost_limits = defaults_cost
|
||||
self.security_settings = defaults_security
|
||||
|
||||
def _init_redis(self):
|
||||
"""初始化Redis连接(延迟连接)"""
|
||||
self.redis_client = None
|
||||
|
||||
Reference in New Issue
Block a user