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