storage.session_storage¶
- class storage.session_storage.SessionStorage(file_path: str | None = None)[source]
Bases:
objectХранилище сессий пользователей в JSON-файле.
Назначение:
Лёгкое файловое хранилище сессионных токенов, сопоставленных с
client_id(например, IP клиента).Предназначено для сред без БД и persistent-кэшей; обеспечивает простые операции и автоочистку истёкших сессий.
Формат данных:
{ "sessions": { "<session_id>": { "username": str, "token": str, "client_id": str, "created_at": ISO8601 str, "expiry": ISO8601 str }, ... } }
Политика TTL:
Каждая сессия действует 30 минут; метод
clean_expired_sessionsудаляет записи с истёкшим сроком.
Ограничения:
Отсутствуют файловые блокировки — в многопроцессной среде возможны гонки.
Путь по умолчанию
/etc/gonets/sessions.jsonтребует прав на запись.
- clean_expired_sessions()[source]
Удаляет все истекшие сессии из хранилища.
- Raises:
Exception – Если произошла ошибка при чтении или записи данных.
Note
Проверяет срок действия каждой сессии и удаляет те, что истекли, записывая обновлённые данные.
- create_session(username: str, token: str, client_id: str) str[source]
Создаёт новую сессию и возвращает уникальный session_id.
- Parameters:
username (str) – Имя пользователя, для которого создаётся сессия.
token (str) – Токен аутентификации.
client_id (str) – Идентификатор клиента.
- Returns:
Уникальный идентификатор сессии (session_id).
- Return type:
str
- Raises:
Exception – Если произошла ошибка при создании или записи сессии.
Note
Удаляет истекшие сессии перед созданием новой и устанавливает срок действия 30 минут.
- delete_session(session_id: str)[source]
Удаляет сессию по указанному session_id.
- Parameters:
session_id (str) – Уникальный идентификатор сессии.
- Raises:
Exception – Если произошла ошибка при чтении или записи данных.
Note
Очищает истекшие сессии перед удалением.
- get_latest_session(client_id: str) Dict | None[source]
Получает последнюю активную сессию для указанного client_id.
- Parameters:
client_id (str) – Идентификатор клиента.
- Returns:
- Словарь с данными последней активной сессии, включая
”session_id”, или None, если сессия не найдена.
- Return type:
Optional[Dict]
- Raises:
Exception – Если произошла ошибка при чтении или обработке данных.
Note
Очищает истекшие сессии перед поиском и возвращает сессию с самым поздним временем создания.