3.9 KiB
3.9 KiB
storage.session_storage
class storage.session_storage.SessionStorage(file_path: str = '/etc/gonets/sessions.json')
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()
Удаляет все истекшие сессии из хранилища.
- Raises: Exception – Если произошла ошибка при чтении или записи данных.
NOTE
Проверяет срок действия каждой сессии и удаляет те, что истекли, записывая обновлённые данные.
create_session(username: str, token: str, client_id: str) → str
Создаёт новую сессию и возвращает уникальный 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)
Удаляет сессию по указанному session_id.
- Parameters: session_id (str) – Уникальный идентификатор сессии.
- Raises: Exception – Если произошла ошибка при чтении или записи данных.
NOTE
Очищает истекшие сессии перед удалением.
get_latest_session(client_id: str) → Dict | None
Получает последнюю активную сессию для указанного client_id.
- Parameters: client_id (str) – Идентификатор клиента.
-
- Returns:
- Словарь с данными последней активной сессии, включая
- ”session_id”, или None, если сессия не найдена.
- Return type: Optional[Dict]
- Raises: Exception – Если произошла ошибка при чтении или обработке данных.
NOTE
Очищает истекшие сессии перед поиском и возвращает сессию с самым поздним временем создания.