Spaces:
Paused
Paused
File size: 1,172 Bytes
f95a1f1 720b664 f95a1f1 720b664 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | import time
from typing import List
from constants import FOUR_HOURS
class SessionTracker:
def __init__(self) -> None:
self.session_timestamp_map = dict()
def update_session(self, session_id: str):
self.session_timestamp_map[session_id] = time.time()
def delete_session(self, session_id: str):
if session_id in self.session_timestamp_map:
del self.session_timestamp_map[session_id]
def delete_inactive_sessions(self) -> List[str]:
now = time.time()
sessions_to_delete = [
sid
for sid, last_t in self.session_timestamp_map.items()
if now - last_t > FOUR_HOURS
]
for session_id in sessions_to_delete:
del self.session_timestamp_map[session_id]
return sessions_to_delete
def delete_oldest_session(self) -> str | None:
if len(self.session_timestamp_map) == 0:
return None
oldest_session_id = min(self.session_timestamp_map.items(), key=lambda x: x[1])[
0
]
self.delete_session(oldest_session_id)
return oldest_session_id
|