ruff fix
This commit is contained in:
@@ -57,25 +57,27 @@ async def get_users(
|
||||
):
|
||||
redis = get_redis()
|
||||
cache_service = get_user_cache_service(redis)
|
||||
|
||||
|
||||
if user_ids:
|
||||
# 先尝试从缓存获取
|
||||
cached_users = []
|
||||
uncached_user_ids = []
|
||||
|
||||
|
||||
for user_id in user_ids[:50]: # 限制50个
|
||||
cached_user = await cache_service.get_user_from_cache(user_id)
|
||||
if cached_user:
|
||||
cached_users.append(cached_user)
|
||||
else:
|
||||
uncached_user_ids.append(user_id)
|
||||
|
||||
|
||||
# 查询未缓存的用户
|
||||
if uncached_user_ids:
|
||||
searched_users = (
|
||||
await session.exec(select(User).where(col(User.id).in_(uncached_user_ids)))
|
||||
await session.exec(
|
||||
select(User).where(col(User.id).in_(uncached_user_ids))
|
||||
)
|
||||
).all()
|
||||
|
||||
|
||||
# 将查询到的用户添加到缓存并返回
|
||||
for searched_user in searched_users:
|
||||
if searched_user.id != BANCHOBOT_ID:
|
||||
@@ -87,7 +89,7 @@ async def get_users(
|
||||
cached_users.append(user_resp)
|
||||
# 异步缓存,不阻塞响应
|
||||
asyncio.create_task(cache_service.cache_user(user_resp))
|
||||
|
||||
|
||||
return BatchUserResponse(users=cached_users)
|
||||
else:
|
||||
searched_users = (await session.exec(select(User).limit(50))).all()
|
||||
@@ -102,7 +104,7 @@ async def get_users(
|
||||
users.append(user_resp)
|
||||
# 异步缓存
|
||||
asyncio.create_task(cache_service.cache_user(user_resp))
|
||||
|
||||
|
||||
return BatchUserResponse(users=users)
|
||||
|
||||
|
||||
@@ -121,14 +123,14 @@ async def get_user_info_ruleset(
|
||||
):
|
||||
redis = get_redis()
|
||||
cache_service = get_user_cache_service(redis)
|
||||
|
||||
|
||||
# 如果是数字ID,先尝试从缓存获取
|
||||
if user_id.isdigit():
|
||||
user_id_int = int(user_id)
|
||||
cached_user = await cache_service.get_user_from_cache(user_id_int, ruleset)
|
||||
if cached_user:
|
||||
return cached_user
|
||||
|
||||
|
||||
searched_user = (
|
||||
await session.exec(
|
||||
select(User).where(
|
||||
@@ -140,17 +142,17 @@ async def get_user_info_ruleset(
|
||||
).first()
|
||||
if not searched_user or searched_user.id == BANCHOBOT_ID:
|
||||
raise HTTPException(404, detail="User not found")
|
||||
|
||||
|
||||
user_resp = await UserResp.from_db(
|
||||
searched_user,
|
||||
session,
|
||||
include=SEARCH_INCLUDED,
|
||||
ruleset=ruleset,
|
||||
)
|
||||
|
||||
|
||||
# 异步缓存结果
|
||||
asyncio.create_task(cache_service.cache_user(user_resp, ruleset))
|
||||
|
||||
|
||||
return user_resp
|
||||
|
||||
|
||||
@@ -169,14 +171,14 @@ async def get_user_info(
|
||||
):
|
||||
redis = get_redis()
|
||||
cache_service = get_user_cache_service(redis)
|
||||
|
||||
|
||||
# 如果是数字ID,先尝试从缓存获取
|
||||
if user_id.isdigit():
|
||||
user_id_int = int(user_id)
|
||||
cached_user = await cache_service.get_user_from_cache(user_id_int)
|
||||
if cached_user:
|
||||
return cached_user
|
||||
|
||||
|
||||
searched_user = (
|
||||
await session.exec(
|
||||
select(User).where(
|
||||
@@ -188,16 +190,16 @@ async def get_user_info(
|
||||
).first()
|
||||
if not searched_user or searched_user.id == BANCHOBOT_ID:
|
||||
raise HTTPException(404, detail="User not found")
|
||||
|
||||
|
||||
user_resp = await UserResp.from_db(
|
||||
searched_user,
|
||||
session,
|
||||
include=SEARCH_INCLUDED,
|
||||
)
|
||||
|
||||
|
||||
# 异步缓存结果
|
||||
asyncio.create_task(cache_service.cache_user(user_resp))
|
||||
|
||||
|
||||
return user_resp
|
||||
|
||||
|
||||
@@ -218,7 +220,7 @@ async def get_user_beatmapsets(
|
||||
):
|
||||
redis = get_redis()
|
||||
cache_service = get_user_cache_service(redis)
|
||||
|
||||
|
||||
# 先尝试从缓存获取
|
||||
cached_result = await cache_service.get_user_beatmapsets_from_cache(
|
||||
user_id, type.value, limit, offset
|
||||
@@ -229,7 +231,7 @@ async def get_user_beatmapsets(
|
||||
return [BeatmapPlaycountsResp(**item) for item in cached_result]
|
||||
else:
|
||||
return [BeatmapsetResp(**item) for item in cached_result]
|
||||
|
||||
|
||||
user = await session.get(User, user_id)
|
||||
if not user or user.id == BANCHOBOT_ID:
|
||||
raise HTTPException(404, detail="User not found")
|
||||
@@ -275,10 +277,14 @@ async def get_user_beatmapsets(
|
||||
# 异步缓存结果
|
||||
async def cache_beatmapsets():
|
||||
try:
|
||||
await cache_service.cache_user_beatmapsets(user_id, type.value, resp, limit, offset)
|
||||
await cache_service.cache_user_beatmapsets(
|
||||
user_id, type.value, resp, limit, offset
|
||||
)
|
||||
except Exception as e:
|
||||
logger.error(f"Error caching user beatmapsets for user {user_id}, type {type.value}: {e}")
|
||||
|
||||
logger.error(
|
||||
f"Error caching user beatmapsets for user {user_id}, type {type.value}: {e}"
|
||||
)
|
||||
|
||||
asyncio.create_task(cache_beatmapsets())
|
||||
|
||||
return resp
|
||||
@@ -311,7 +317,7 @@ async def get_user_scores(
|
||||
):
|
||||
redis = get_redis()
|
||||
cache_service = get_user_cache_service(redis)
|
||||
|
||||
|
||||
# 先尝试从缓存获取(对于recent类型使用较短的缓存时间)
|
||||
cache_expire = 30 if type == "recent" else settings.user_scores_cache_expire_seconds
|
||||
cached_scores = await cache_service.get_user_scores_from_cache(
|
||||
@@ -319,7 +325,7 @@ async def get_user_scores(
|
||||
)
|
||||
if cached_scores is not None:
|
||||
return cached_scores
|
||||
|
||||
|
||||
db_user = await session.get(User, user_id)
|
||||
if not db_user or db_user.id == BANCHOBOT_ID:
|
||||
raise HTTPException(404, detail="User not found")
|
||||
@@ -355,7 +361,7 @@ async def get_user_scores(
|
||||
).all()
|
||||
if not scores:
|
||||
return []
|
||||
|
||||
|
||||
score_responses = [
|
||||
await ScoreResp.from_db(
|
||||
session,
|
||||
@@ -363,14 +369,14 @@ async def get_user_scores(
|
||||
)
|
||||
for score in scores
|
||||
]
|
||||
|
||||
|
||||
# 异步缓存结果
|
||||
asyncio.create_task(
|
||||
cache_service.cache_user_scores(
|
||||
user_id, type, score_responses, mode, limit, offset, cache_expire
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
return score_responses
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user