游铛铛后端系统现已集成了完整的后台定时任务系统,用于自动执行关键的维护和管理任务,确保系统的稳定运行和安全性。
后台任务会在应用启动时自动启动,关闭时自动停止:
# main.py 中的配置
app = FastAPI(
title="游铛铛API",
description="游铛铛产品后端API",
version="1.0.0",
docs_url="/docs",
redoc_url="/redoc",
lifespan=lifespan_manager, # 自动管理后台任务
)
访问 /admin/docs 查看API文档,或使用以下端点:
GET /admin/dashboard/stats
响应示例:
{
"code": 200,
"data": {
"background_tasks": {
"running": true,
"total_tasks": 3,
"active_tasks": 3,
"completed_tasks": 0
}
}
}
GET /admin/dashboard/background-tasks/status
响应示例:
{
"code": 200,
"data": {
"manager_running": true,
"total_tasks": 3,
"tasks": [
{
"id": 1,
"name": "后台任务-1",
"status": "running",
"done": false,
"cancelled": false
}
]
}
}
后台任务的运行状态会记录在应用日志中:
INFO | 启动后台定时任务...
INFO | 已启动 3 个后台任务
INFO | 启动密钥轮换定时任务 (间隔: 5分钟)
INFO | 启动Session清理定时任务 (间隔: 10分钟)
INFO | 启动心跳缓存清理定时任务 (间隔: 1小时)
INFO | 停止后台定时任务...
INFO | 后台定时任务已停止
后台任务的执行间隔可以在 app/background_tasks.py 中修改:
# 密钥轮换间隔(秒)
await asyncio.sleep(300) # 5分钟
# Session清理间隔(秒)
await asyncio.sleep(7200) # 2小时
# 心跳缓存清理间隔(秒)
await asyncio.sleep(3600) # 1小时
如果需要手动控制后台任务(仅用于开发调试):
from app.background_tasks import start_background_tasks, stop_background_tasks
# 手动启动
await start_background_tasks()
# 手动停止
await stop_background_tasks()
所有API接口都会自动校验用户状态,异常时客户端自动退出登录:
status != 1)expire_time < now)当检测到异常时,后端返回相应的HTTP状态码:
401 Unauthorized: Session无效、用户不存在403 Forbidden: 用户禁用、卡密过期、其他地方登录客户端根据错误类型采用不同的处理策略:
立即退出登录:
宽松重试机制:
| 异常情况 | 检测位置 | 错误信息 | 客户端响应 | 处理策略 |
|---|---|---|---|---|
| 卡密过期 | Session验证 | "用户卡密已过期" | 🔐 立即退出登录 | 认证异常 |
| 用户禁用 | Session验证 | "用户不存在或已被禁用" | 🔐 立即退出登录 | 认证异常 |
| 其他地方登录 | Session验证 | "账号在其他地方登录" | 🔐 立即退出登录 | 认证异常 |
| Session过期 | 心跳验证 | "会话已过期" | 🔐 立即退出登录 | 认证异常 |
| 网络异常 | 心跳调用失败 | 连接超时/网络错误 | 🌐 宽松重试(15次) | 网络异常 |
| 服务器错误 | 心跳响应 | 5xx错误 | 🌐 宽松重试(15次) | 网络异常 |
为了保持用户的一致在线体验,我们采用了以下策略:
添加后台定时任务系统后,游铛铛系统现已达到 100% 完整性:
| 功能模块 | 完成度 | 状态 |
|---|---|---|
| API加密规范 | 100% | ✅ 完整 |
| 密钥轮换服务 | 100% | ✅ 完整 |
| Session管理 | 100% | ✅ 完整 |
| 心跳监控 | 100% | ✅ 完整 |
| 客户端实现 | 100% | ✅ 完整 |
| 后台定时任务 | 100% | ✅ 完整 |
最后更新: 2026-01-06