litefs.session.session 源代码

#!/usr/bin/env python
# coding: utf-8

from collections import UserDict
from typing import Any, Optional


[文档] class Session(UserDict): """ Session 数据对象 继承自 UserDict,用于存储单个 Session 的数据 """ def __init__(self, session_id=None, store=None): """ 初始化 Session Args: session_id: Session ID(如果为 None,则会在创建时生成) store: Session 存储后端实例,用于手动保存数据 """ import uuid self.id = session_id or str(uuid.uuid4()) self.data = {} self.store = store def __str__(self): return "<Session Id=%s>" % self.id
[文档] def save(self): """ 手动保存 Session 数据到存储后端 """ if self.store is not None: self.store.put(self.id, self) return True return False
[文档] class MemorySessionStore: """ 内存 Session 存储 使用内存作为 Session 存储,适合开发环境 """ def __init__(self, max_size: int = 1000000): """ 初始化 MemorySessionStore Args: max_size: 最大 Session 数量 """ self._max_size = max_size self._sessions = {}
[文档] def put(self, session_id: str, session: Session) -> None: """ 存储 Session Args: session_id: Session ID session: Session 对象 """ if len(self._sessions) >= self._max_size: # 简单的 LRU 策略:删除最早的 Session oldest_session_id = next(iter(self._sessions)) del self._sessions[oldest_session_id] self._sessions[session_id] = session
[文档] def get(self, session_id: str) -> Optional[Session]: """ 获取 Session Args: session_id: Session ID Returns: Session 对象,如果不存在则返回 None """ return self._sessions.get(session_id)
[文档] def delete(self, session_id: str) -> None: """ 删除 Session Args: session_id: Session ID """ if session_id in self._sessions: del self._sessions[session_id]
[文档] def exists(self, session_id: str) -> bool: """ 检查 Session 是否存在 Args: session_id: Session ID Returns: Session 是否存在 """ return session_id in self._sessions
[文档] def expire(self, session_id: str, expiration: int) -> bool: """ 设置 Session 过期时间 注意:内存 Session 不支持过期时间,此方法始终返回 False Args: session_id: Session ID expiration: 过期时间(秒) Returns: 是否设置成功 """ return False
[文档] def ttl(self, session_id: str) -> int: """ 获取 Session 剩余过期时间 注意:内存 Session 不支持过期时间,此方法始终返回 -1 Args: session_id: Session ID Returns: 剩余过期时间(秒),如果 Session 不存在则返回 -2,否则返回 -1(不支持查询) """ if session_id not in self._sessions: return -2 return -1
[文档] def clear(self) -> None: """ 清空所有 Session """ self._sessions.clear()
def __len__(self) -> int: """ 获取 Session 数量 Returns: Session 数量 """ return len(self._sessions)
[文档] def create(self) -> Session: """ 创建新的 Session 对象 Returns: Session 对象 """ session = Session(store=self) return session
[文档] def save(self, session: Session) -> None: """ 保存 Session 数据 Args: session: Session 对象 """ self.put(session.id, session)
__all__ = [ 'Session', 'MemorySessionStore', ]