Skip to content

Commit 15be2cc

Browse files
committed
Clean up resources when ReActAgent is cancelled
1 parent 5bb67dd commit 15be2cc

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

coagent/agents/react_agent/agent.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,13 @@ async def handle_history(
106106

107107
loop = AgentLoop(self)
108108
result = loop.run(input=input, data=data)
109-
async for item in result.stream_events():
110-
yield OutputMessage(item=item) # type: ignore
109+
110+
try:
111+
async for item in result.stream_events():
112+
yield OutputMessage(item=item) # type: ignore
113+
except asyncio.CancelledError:
114+
result.cancel() # Clean up resources.
115+
raise
111116

112117

113118
DEFAULT_MAX_TURNS = 10
@@ -139,17 +144,13 @@ async def stream_events(self) -> AsyncIterator[StreamEvent]:
139144
if self._cancel_event.is_set():
140145
break
141146

142-
try:
143-
item = await self._queue.get()
144-
except asyncio.CancelledError:
145-
break
147+
item = await self._queue.get()
148+
self._queue.task_done()
146149

147150
if isinstance(item, QueueCompleteSentinel):
148-
self._queue.task_done()
149151
break
150152

151153
yield item
152-
self._queue.task_done()
153154

154155

155156
class AgentLoop:

0 commit comments

Comments
 (0)