diff --git a/web/ratelimit.py b/web/ratelimit.py index a66d657..769806f 100644 --- a/web/ratelimit.py +++ b/web/ratelimit.py @@ -13,9 +13,12 @@ from core.config import RESULT_RETENTION_SECONDS # noqa: F401 - 再导出,与 from core.state import RATE_BUCKETS, RATE_LOCK from web.errors import AppError -# 免于限流的端点(试听流/进度轮询) +# 免于限流的端点(试听流/进度轮询)。 +# 注意 /api/task/heartbeat 不在此列:它自带 hb 桶(60/分),此前的豁免表 +# 让 guard 在进入桶之前就直接返回,限额写了等于没写——心跳端点是唯一 +# 在豁免与限流两处同时出现的路径(/api/queue、/api/batch_progress 本就不调 guard)。 _EXEMPT_PREFIXES = ('/audio_stream',) -_EXEMPT_PATHS = {'/api/queue', '/api/batch_progress', '/api/task/heartbeat'} +_EXEMPT_PATHS = {'/api/queue', '/api/batch_progress'} def client_ip(request: Request) -> str: