Round 4 fixes: scheduler DB save check, empty validation_targets, proxy list page fallback, scheduler frontend state sync, tests

This commit is contained in:
祀梦
2026-04-05 10:31:20 +08:00
parent dc5f050683
commit d5fdfd65d9
8 changed files with 71 additions and 11 deletions

View File

@@ -41,7 +41,7 @@ async def lifespan(app: FastAPI):
connect_timeout=app_settings.validator_connect_timeout,
max_concurrency=db_settings.get("default_concurrency", app_settings.validator_max_concurrency),
)
if db_settings.get("validation_targets"):
if db_settings.get("validation_targets") is not None:
validator.update_test_urls(db_settings["validation_targets"])
# 验证 WorkerPool

View File

@@ -13,7 +13,9 @@ router = APIRouter(prefix="/api/scheduler", tags=["scheduler"])
async def _save_auto_validate_setting(enabled: bool, settings_repo: SettingsRepository):
"""保存自动验证设置"""
async with get_db() as db:
await settings_repo.save(db, {"auto_validate": enabled})
success = await settings_repo.save(db, {"auto_validate": enabled})
if not success:
raise RuntimeError("保存自动验证设置失败")
@router.post("/start")

View File

@@ -50,7 +50,7 @@ async def save_settings(
validator._init_timeout = request.validation_timeout
validator._init_connect_timeout = request.validation_timeout
validator._init_max_concurrency = request.default_concurrency
if request.validation_targets:
if request.validation_targets is not None:
validator.update_test_urls(request.validation_targets)
# 先关闭现有 session再重置 semaphore避免竞态窗口
await validator.close()