From 0f637446dfa7c8d09f16ea784eb3ab5a74bc5906 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=92=95=E8=B0=B7=E9=85=B1?= Date: Mon, 29 Sep 2025 21:33:29 +0800 Subject: [PATCH] Update audio_proxy.py --- app/router/private/audio_proxy.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/app/router/private/audio_proxy.py b/app/router/private/audio_proxy.py index a6892c6..ca8cda4 100644 --- a/app/router/private/audio_proxy.py +++ b/app/router/private/audio_proxy.py @@ -12,6 +12,7 @@ from app.service.audio_proxy_service import AudioProxyService, get_audio_proxy_s from fastapi import APIRouter, Depends, HTTPException, Path from fastapi.responses import Response +from fastapi_limiter.depends import RateLimiter from loguru import logger import redis.asyncio as redis @@ -26,7 +27,13 @@ async def get_audio_proxy_dependency( return get_audio_proxy_service(redis_binary_client, redis_text_client) -@router.get("/beatmapset/{beatmapset_id}") +@router.get( + "/beatmapset/{beatmapset_id}", + dependencies=[ + Depends(RateLimiter(times=30, minutes=1)), # 每分钟最多30次请求 + Depends(RateLimiter(times=5, seconds=10)), # 每10秒最多5次请求 + ], +) async def get_beatmapset_audio( beatmapset_id: Annotated[int, Path(description="谱面集ID", ge=1)], audio_service: Annotated[AudioProxyService, Depends(get_audio_proxy_dependency)], @@ -37,6 +44,10 @@ async def get_beatmapset_audio( 根据谱面集ID获取osu!官方的音频预览文件。 音频文件会被缓存7天以提高响应速度。 + 速率限制: + - 每分钟最多30次请求 + - 每10秒最多5次请求 + 参数: - beatmapset_id: 谱面集ID