@@ -26,6 +26,7 @@ def __init__(
2626 password : Optional [str ] = None ,
2727 mode : Optional [Literal ["agent" , "team" , "workflow" ]] = "agent" ,
2828 ssl : Optional [bool ] = False ,
29+ expire : Optional [int ] = None ,
2930 ):
3031 """
3132 Initialize Redis storage for sessions.
@@ -38,9 +39,11 @@ def __init__(
3839 password (Optional[str]): Redis password if authentication is required
3940 mode (Optional[Literal["agent", "team", "workflow"]]): Storage mode
4041 ssl (Optional[bool]): Whether to use SSL for Redis connection
42+ expire (Optional[int]): TTL (time to live) in seconds for Redis keys. None means no expiration.
4143 """
4244 super ().__init__ (mode )
4345 self .prefix = prefix
46+ self .expire = expire
4447 self .redis_client = Redis (
4548 host = host ,
4649 port = port ,
@@ -267,7 +270,10 @@ def upsert(self, session: Session) -> Optional[Session]:
267270 data ["created_at" ] = data ["updated_at" ]
268271
269272 key = self ._get_key (session .session_id )
270- self .redis_client .set (key , self .serialize (data ))
273+ if self .expire is not None :
274+ self .redis_client .set (key , self .serialize (data ), ex = self .expire )
275+ else :
276+ self .redis_client .set (key , self .serialize (data ))
271277 return session
272278 except Exception as e :
273279 logger .error (f"Error upserting session: { e } " )
0 commit comments