aws / aws/bedrock-agentcore-sdk-python
Long running task with streaming gets terminated with "WARNING:asyncio:socket.send() raised exception."
- Vorherrschende Sprache
- Python
- Sterne
- 761
- Forks
- 147
- Ø Merge
- 1 T. 23 Std.
- Gemergte PRs (30 T.)
- 7
Beschreibung
I'm trying to execute some long running task, but every time when it reaches 6 min or 8 min duration it automatically cuts of connection and shows "WARNING:asyncio:socket.send() raised exception." in logs. I tried in locally its working fine, but on deployed version this is happening, I'm using "app.add_async_task()" as well as "app.complete_async_task()", they are getting triggered and its showing in logs, but in between after 6 min or 8 min it starts showing that error. My code looks something like this:
```
import os
import asyncio
from datetime import datetime
from strands import Agent, tool
from strands.models import OpenAIModel
from bedrock_agentcore import BedrockAgentCoreApp
@tool
async def background_task(minutes: int = 15) -> str:
for i in range(minutes):
await asyncio.sleep(60)
return f"Background task completed in ~{minutes} minutes."
model = OpenAIModel(
client_args={"api_key": os.getenv("OPENAI_API_KEY")},
model_id="gpt-5-mini",
reasoning={"effort": "medium"},
text={"verbosity": "low"},
)
agent = Agent(
model=model,
tools=[background_task],
instructions="Call the `background_task` tool for 15 minutes to simulate a long job."
)
app = BedrockAgentCoreApp()
@app.entrypoint
async def agent_invocation(payload):
task_id = None
user_message = payload.get("prompt", "No prompt found in input")
user_message += "\n\nUse background_task for 15 minutes."
stream = agent.stream_async(user_message)
task_id = app.add_async_task("Agent_stream")
try:
async for event in stream:
print(event)
yield event
finally:
if task_id:
app.complete_async_task(task_id)
if __name__ == "__main__":
app.run()
```
Beitragsleitfaden
Rechercherichtung
Beginne mit der Funktion app.entrypoint und den in der Issue gezeigten Aufrufen von add_async_task, complete_async_task und app.run. Reproduziere die 15-minütige Streaming-Aufgabe in der deployten Umgebung und vergleiche sie mit dem lokalen Lauf; konzentriere dich darauf, wann die Socket-Warnung erscheint. Als abgeschlossen gilt die Aufgabe, wenn der deployte Stream für die lang laufende Aufgabe nutzbar bleibt oder die Laufzeitbeschränkung und die unterstützte Handhabung dokumentiert sind.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- aws, python
- Bereich
- api, backend, cloud
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Muss geklärt werden
- Anfängerfreundlichkeit
- 35/100