test: conn_limiter 差异覆盖与导入清理

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
浅念
2026-10-12 21:05:54 +08:00
parent 54a65ed7da
commit 8453d3cc56
3 changed files with 16 additions and 3 deletions
+3 -3
View File
@@ -6,7 +6,7 @@ from fastapi import APIRouter, WebSocket, WebSocketDisconnect
from app.engine.models import ConversationSource, ConversationStatus
from app.engine.routes.runtime import get_runtime
from app.engine.services.conn_limiter import DEFAULT_WS_CONN_LIMIT
from app.engine.services.conn_limiter import limiter as conn_limiter
from app.engine.services.conn_limiter import limiter
from app.engine.services.conversation import ConversationManager
logger = logging.getLogger(__name__)
@@ -27,7 +27,7 @@ async def ws_chat(websocket: WebSocket):
limit = runtime.config.data["engine"].get(
"ws_conn_limit", DEFAULT_WS_CONN_LIMIT)
if not conn_limiter.try_acquire(runtime.config.slug, client_ip, limit=limit):
if not limiter.try_acquire(runtime.config.slug, client_ip, limit=limit):
await websocket.close(code=1013, reason="too many connections")
return
@@ -123,4 +123,4 @@ async def ws_chat(websocket: WebSocket):
finally:
# Task 8: 正常关闭与异常断开都归还名额——acquire 成功后所有路径
# 必经此处,不泄漏(accept 失败/循环中抛错同样覆盖)
conn_limiter.release(runtime.config.slug, client_ip)
limiter.release(runtime.config.slug, client_ip)
+1
View File
@@ -17,6 +17,7 @@ DEFAULT_CONFIG: dict = {
"max_attempts": 3, "retry_backoff_base": 1.0},
"ai": {"provider": "glm", "api_key": None, "base_url": None, "model": "glm-4-flash"},
"engine": {"context_seed_keys": {}, "rate_limit_per_hour": 30,
# 双源防漂移: 默认值须与 conn_limiter.DEFAULT_WS_CONN_LIMIT 一致
"ws_conn_limit": 10},
"misc": {"name_to_region_extras": {}},
}