storage.session_storage¶
- class storage.session_storage.SessionStorage(file_path: str = '/etc/gonets/sessions.json')[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.
- Args:
username (str): Имя пользователя, для которого создаётся сессия. token (str): Токен аутентификации. client_id (str): Идентификатор клиента.
- Returns:
str: Уникальный идентификатор сессии (session_id).
- Raises:
Exception: Если произошла ошибка при создании или записи сессии.
- Note:
Удаляет истекшие сессии перед созданием новой и устанавливает срок действия 30 минут.
- delete_session(session_id: str)[source]¶
Удаляет сессию по указанному session_id.
- Args:
session_id (str): Уникальный идентификатор сессии.
- Raises:
Exception: Если произошла ошибка при чтении или записи данных.
- Note:
Очищает истекшие сессии перед удалением.
- get_latest_session(client_id: str) Dict | None[source]¶
Получает последнюю активную сессию для указанного client_id.
- Args:
client_id (str): Идентификатор клиента.
- Returns:
- Optional[Dict]: Словарь с данными последней активной сессии, включая
“session_id”, или None, если сессия не найдена.
- Raises:
Exception: Если произошла ошибка при чтении или обработке данных.
- Note:
Очищает истекшие сессии перед поиском и возвращает сессию с самым поздним временем создания.