Session Resume
Resume interrupted agent sessions
Resume interrupted sessions to continue where you left off.
from praisonaiagents import Agent, Session
session = Session(session_id="task-123", persistence="sqlite")
agent = Agent(name="Worker", session=session)
agent.resume()The user reopens the same session ID after a crash or deploy and the agent continues the in-flight task.
Quick Start
- Simple Usage
Reopen a session by its ID and call
resume()to continue the in-flight task.python from praisonaiagents import Agent, Session session = Session(session_id="task-123", persistence="sqlite") agent = Agent(name="Worker", session=session) agent.resume() - With Configuration
Add automatic checkpoints so long tasks resume from the latest step, not the start.
python from praisonaiagents import Agent, Session session = Session( session_id="task-123", persistence="sqlite", checkpoint_interval=5, ) agent = Agent(name="Worker", session=session) agent.start("Process 1000 items...")
How It Works
Basic Resume
from praisonaiagents import Agent, Session
# Original session
session = Session(session_id="task-123", persistence="sqlite")
agent = Agent(name="Worker", session=session)
agent.start("Start a long task...")
# ... application crashes or restarts ...
# Resume session
session = Session(session_id="task-123", persistence="sqlite")
agent = Agent(name="Worker", session=session)
agent.resume() # Continues from last checkpointWith Checkpoints
from praisonaiagents import Agent, Session
session = Session(
session_id="task-123",
persistence="sqlite",
checkpoint_interval=5 # Checkpoint every 5 steps
)
agent = Agent(name="Worker", session=session)
# Long-running task with automatic checkpoints
agent.start("Process 1000 items...")Manual Checkpoints
from praisonaiagents import Agent, Session
session = Session(session_id="task-123", persistence="sqlite")
agent = Agent(name="Worker", session=session)
# Create checkpoint manually
session.checkpoint(
state={"processed": 500, "remaining": 500},
message="Halfway done"
)
# Resume from checkpoint
session.resume_from_checkpoint()List Sessions
from praisonaiagents import Session
# List all sessions
sessions = Session.list_all(persistence="sqlite")
for s in sessions:
print(f"{s.session_id}: {s.status}")Best Practices
Keep the session_id stable across restarts
resume() finds prior state by session_id. Store the ID (env var, queue message, or DB row) so a restarted process reopens the right session.
Tune checkpoint_interval to task length
Frequent checkpoints cost writes but lose less on failure. For step-heavy tasks, a small interval like checkpoint_interval=5 balances safety and overhead.
Save state at natural boundaries
Call session.save_state({...}) after a meaningful unit of work so session.restore_state() reopens at a clean point when the same session_id resumes.
List sessions to reconcile state
Session.list_all(persistence=...) shows every stored session and its status — useful for dashboards and cleanup jobs.