From 1bc950d97bc964db46436b52b462141c7af1f558 Mon Sep 17 00:00:00 2001 From: 0880 <98263509+0880880@users.noreply.github.com> Date: Wed, 21 Jan 2026 11:43:09 +0330 Subject: [PATCH] Remove users who have left matchmaking --- app.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/app.py b/app.py index aba3dfa..ab6a9b9 100644 --- a/app.py +++ b/app.py @@ -243,12 +243,13 @@ async def new_room(request): quick_queue: deque[str] quick_map: dict[str, Room] +quick_last_map: dict[str, datetime] lock = asyncio.Lock() @app.POST("/quick") async def quick_match(request: Request): - global quick_queue, quick_map + global quick_queue, quick_map, quick_last_map data = parse(request.body) async with lock: if ( @@ -261,6 +262,13 @@ async def quick_match(request: Request): second = None position: int = 0 # UPDATE LOGIC + now = datetime.now(timezone.utc) + for q, t in quick_last_map.items(): + if t - now >= timedelta(seconds=3): + quick_queue.remove(q) + del quick_map[q] + del quick_last_map[q] + while position < len(quick_queue): if quick_queue[position] not in quick_map: if not first: @@ -277,6 +285,7 @@ async def quick_match(request: Request): quick_map[second] = room qid = data["queue_id"] + quick_last_map[qid] = datetime.now(timezone.utc) if qid in quick_map: return JSONResponse({"room_id": quick_map[qid]}) else: @@ -285,6 +294,7 @@ async def quick_match(request: Request): else: qid = str(uuid.uuid4()) quick_queue.append(qid) + quick_last_map[qid] = datetime.now(timezone.utc) return JSONResponse({"queue_id": qid})