# storage.session_storage ### *class* storage.session_storage.SessionStorage(file_path: str = '/etc/gonets/sessions.json') Bases: `object` Хранилище сессий пользователей в JSON-файле. Назначение: : Лёгкое файловое хранилище для сессионных токенов, сопоставленных с client_id (например, IP клиента). Предназначено для сред без БД и persistent‑кэшей. Обеспечивает базовые операции и авто‑очистку протухших сессий. Формат данных: : { : “sessions”: { : “”: { : “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 Очищает истекшие сессии перед поиском и возвращает сессию с самым поздним временем создания.