"""Общее состояние сессий: хранилище, блокировка, константы, TTL-таймер. Единая точка хранения состояния — все операции импортируют её. Дробить state.py на файл-на-переменную не нужно: это данные, а не функции. """ import threading # TTL сессии: 30 минут TTL_SECONDS = 30 * 60 # Максимальный объём одного файла и суммарный объём файлов в сессии (защита памяти) MAX_FILE_BYTES = 50 * 1024 * 1024 # 50 MB на один файл MAX_SESSION_BYTES = 500 * 1024 * 1024 # 500 MB суммарно на сессию _sessions: dict = {} _lock = threading.Lock() def _start_timer(sid: str) -> threading.Timer: """Запустить таймер автоочистки сессии через TTL.""" def _clean(): with _lock: _sessions.pop(sid, None) timer = threading.Timer(TTL_SECONDS, _clean) timer.daemon = True timer.start() return timer