fix: 修复练习结束时的DetachedInstanceError
All checks were successful
continuous-integration/drone/push Build is passing

- 在第二次commit后refresh session对象
- 避免异步session管理导致的对象脱离错误
This commit is contained in:
yuliang_guo
2026-01-31 17:13:00 +08:00
parent 07638152fc
commit cabc3c3442

View File

@@ -724,8 +724,15 @@ async def end_practice_session(
new_badges = await badge_service.check_and_award_badges(current_user.id) new_badges = await badge_service.check_and_award_badges(current_user.id)
await db.commit() await db.commit()
# 第二次commit后需要refresh避免DetachedInstanceError
await db.refresh(session)
except Exception as e: except Exception as e:
logger.warning(f"练习经验值/奖章处理失败: {str(e)}") logger.warning(f"练习经验值/奖章处理失败: {str(e)}")
# 确保 session 仍然可用
try:
await db.refresh(session)
except Exception:
pass
return ResponseModel( return ResponseModel(
code=200, code=200,