Spaces:
Paused
Paused
| 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 | |