feat: better cache system

This commit is contained in:
kittentm 2026-03-25 00:31:32 +01:00
commit c0c40e9350
No known key found for this signature in database
GPG key ID: AC43DFDBC1F44A91
4 changed files with 15 additions and 3 deletions

View file

@ -3,7 +3,9 @@ from routes import sessionid_check, sso
from config import settings from config import settings
import uvicorn import uvicorn
from fastapi.middleware.cors import CORSMiddleware from fastapi.middleware.cors import CORSMiddleware
from database import init_db, SessionLocal, PlayerRank # Added for reset logic from fastapi_cache import FastAPICache
from fastapi_cache.backends.inmemory import InMemoryBackend
from database import init_db, SessionLocal, PlayerRank
from routes import logout from routes import logout
from routes import boss from routes import boss
#yes meow meow import me please... i want to be embedded into my code... :pleading_face: #yes meow meow import me please... i want to be embedded into my code... :pleading_face:
@ -60,6 +62,8 @@ async def weekly_rank_reset_loop():
db.execute(delete(PlayerRank)) db.execute(delete(PlayerRank))
db.commit() db.commit()
print("Ranking table cleared successfully.") print("Ranking table cleared successfully.")
await FastAPICache.clear()
print("Cache cleared")
await asyncio.sleep(60) await asyncio.sleep(60)
@ -71,6 +75,7 @@ async def weekly_rank_reset_loop():
@asynccontextmanager @asynccontextmanager
async def lifespan(app: FastAPI): async def lifespan(app: FastAPI):
FastAPICache.init(InMemoryBackend())
global judd_process global judd_process
print("starting judd server") print("starting judd server")

View file

@ -32,3 +32,4 @@ typing_extensions==4.15.0
urllib3==2.6.3 urllib3==2.6.3
uvicorn==0.41.0 uvicorn==0.41.0
tweepy==4.16.0 tweepy==4.16.0
fastapi-cache2==0.2.2

View file

@ -2,6 +2,9 @@ from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session as DBSession from sqlalchemy.orm import Session as DBSession
from sqlalchemy import desc from sqlalchemy import desc
from database import SessionLocal, PlayerRank, EquipmentLast from database import SessionLocal, PlayerRank, EquipmentLast
from fastapi_cache import FastAPICache
from fastapi_cache.backends.inmemory import InMemoryBackend
from fastapi_cache.decorator import cache
router = APIRouter() router = APIRouter()
@ -13,6 +16,7 @@ def get_db():
db.close() db.close()
@router.get("/leaderboard") @router.get("/leaderboard")
@cache(expire=60)
async def get_leaderboard(db: DBSession = Depends(get_db)): async def get_leaderboard(db: DBSession = Depends(get_db)):
try: try:
top_100_query = ( top_100_query = (

View file

@ -2,6 +2,7 @@ from fastapi import APIRouter, Request, Response
import yaml import yaml
import json import json
from datetime import datetime, timedelta, timezone from datetime import datetime, timedelta, timezone
from fastapi_cache.decorator import cache
router = APIRouter() router = APIRouter()
@ -33,6 +34,7 @@ RULE_NAMES = {
} }
@router.api_route('/boss', methods=['GET', 'POST']) @router.api_route('/boss', methods=['GET', 'POST'])
@cache(expire=3660)
async def boss_rotation(request: Request): async def boss_rotation(request: Request):
try: try:
with open("boss.yaml", "r") as f: with open("boss.yaml", "r") as f:
@ -78,7 +80,7 @@ async def boss_rotation(request: Request):
} }
} }
return Response(content=json.dumps(response_data), media_type="application/json") return response_data
except Exception as e: except Exception as e:
return Response(content=json.dumps({"error": str(e)}), status_code=500, media_type="application/json") return Response(content=json.dumps({"error": str(e)}), status_code=500, media_type="application/json")