Session Management
A session is a bounded period of interaction between a user and an agent. Sessions have a start, an end, and a timeout. Managing sessions correctly prevents state leakage between users.
8 min•By Priygop Team•Updated 2026
Session Lifecycle
Session Lifecycle
import uuid
from datetime import datetime, timedelta
class SessionManager:
"""Manages agent sessions with automatic timeout."""
def __init__(self, timeout_minutes: int = 30):
self.sessions = {}
self.timeout = timedelta(minutes=timeout_minutes)
def create_session(self, user_id: str) -> str:
session_id = str(uuid.uuid4())
self.sessions[session_id] = {
"session_id": session_id,
"user_id": user_id,
"created_at": datetime.now(),
"last_activity": datetime.now(),
"state": {},
"active": True
}
print(f"Session created: {session_id[:8]}... for user {user_id}")
return session_id
def get_session(self, session_id: str) -> dict | None:
session = self.sessions.get(session_id)
if not session:
return None
# Check for timeout
if datetime.now() - session["last_activity"] > self.timeout:
self.end_session(session_id)
return None
# Update last activity
session["last_activity"] = datetime.now()
return session
def update_state(self, session_id: str, key: str, value):
session = self.get_session(session_id)
if session:
session["state"][key] = value
def end_session(self, session_id: str):
if session_id in self.sessions:
self.sessions[session_id]["active"] = False
print(f"Session ended: {session_id[:8]}...")
manager = SessionManager(timeout_minutes=30)
session_id = manager.create_session("U-001")
manager.update_state(session_id, "last_query", "Python frameworks")
session = manager.get_session(session_id)
print("Last query:", session["state"]["last_query"])Diagram
Loading diagram…
Always hash passwords, regenerate session ID on login, use HTTPS