File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -182,30 +182,34 @@ class TimeoutLimitMiddleware(AgentMiddleware):
182182 """
183183
184184 _seconds : float
185- _deadline : float | None
185+ _deadline_per_thread_id : dict [ str , Any ]
186186
187187 def __init__ (self , seconds : float ) -> None :
188188 self ._seconds = seconds
189- self ._deadline = None
189+ self ._deadline_per_thread_id = {}
190190
191191 @override
192192 async def agent_middleware (
193193 self ,
194194 request : AgentRequest ,
195195 handler : AgentMiddlewareHandler ,
196196 ) -> AgentResponse [Any | None ]:
197- # WARN: this might not work with agents handling
198- # different threads at the same time.
199- self ._deadline = monotonic () + self ._seconds
200- return await handler (request )
197+ try :
198+ # Agent loop starting.
199+ self ._deadline_per_thread_id [request .thread_id ] = (
200+ monotonic () + self ._seconds
201+ )
202+ return await handler (request )
203+ finally :
204+ del self ._deadline_per_thread_id [request .thread_id ] # don't leak memory
201205
202206 @override
203207 async def model_middleware (
204208 self ,
205209 request : ModelRequest ,
206210 handler : ModelMiddlewareHandler ,
207211 ) -> ModelResponse :
208- if self . _deadline is not None and monotonic () >= self ._deadline :
212+ if monotonic () >= self ._deadline_per_thread_id [ request . state . thread_id ] :
209213 raise TimeoutExceededException (timeout_seconds = self ._seconds )
210214 return await handler (request )
211215
You can’t perform that action at this time.
0 commit comments