Round 5 fixes: workerpool resize shrink, validator lazy session close, plugin config error handling, 422 message detail, tests

This commit is contained in:
祀梦
2026-04-05 10:39:59 +08:00
parent d5fdfd65d9
commit 92c7fa19e2
5 changed files with 23 additions and 22 deletions

View File

@@ -52,9 +52,14 @@ async def save_settings(
validator._init_max_concurrency = request.default_concurrency
if request.validation_targets is not None:
validator.update_test_urls(request.validation_targets)
# 先关闭现有 session,再重置 semaphore避免竞态窗口
await validator.close()
# 延迟关闭旧 session:让正在验证的代理继续使用旧 session
# 新请求会通过 _ensure_session() 自动创建使用新配置的 session
old_session = validator._http_session
validator._http_session = None
validator._http_connector = None
validator._semaphore = None
if old_session and not old_session.closed:
asyncio.create_task(old_session.close())
logger.info(f"Validator config updated: timeout={request.validation_timeout}, concurrency={request.default_concurrency}, targets={request.validation_targets}")
return success_response("保存设置成功", request.model_dump())