fix: protege limpeza da sessão após desconexão

This commit is contained in:
alex alves
2026-11-03 10:31:04 -03:00
parent 5c35fd4e33
commit 82553d86c7
3 changed files with 76 additions and 72 deletions

View File

@@ -5,6 +5,7 @@ description = "Realtime voice assistant with WebSocket audio gateway, streaming
readme = "README.md"
requires-python = ">=3.12"
dependencies = [
"anyio>=4.15.1,<5",
"deepagents>=0.7.26",
"fastapi>=0.141.1",
"httpx>=0.28,<1",

View File

@@ -35,6 +35,7 @@ Architecture:
import json
import logging
from pathlib import Path
import anyio
from fastapi.responses import FileResponse
from fastapi.staticfiles import StaticFiles
@@ -1044,6 +1045,7 @@ async def audio_socket(websocket: WebSocket) -> None:
pass
finally:
with anyio.CancelScope(shield=True):
# Stop Gateway-owned finalization before provider cleanup.
try:
await cancel_finalization_task()
@@ -1063,8 +1065,7 @@ async def audio_socket(websocket: WebSocket) -> None:
session.session_id if session else None,
)
# A task may have been created before registration failed.
# Handle it independently if the pipeline does not own it.
# Handle tasks created before pipeline registration.
if stt_events_task is not None:
task = stt_events_task
@@ -1100,6 +1101,7 @@ async def audio_socket(websocket: WebSocket) -> None:
if task.done():
stt_events_task = None
# Abort STT without waiting for a final transcript.
if stt is not None:
try:
@@ -1133,4 +1135,3 @@ async def audio_socket(websocket: WebSocket) -> None:
)
finally:
agent = None

2
uv.lock generated
View File

@@ -2924,6 +2924,7 @@ name = "voice-assistant"
version = "0.1.0"
source = { editable = "." }
dependencies = [
{ name = "anyio" },
{ name = "deepagents" },
{ name = "fastapi" },
{ name = "httpx" },
@@ -2946,6 +2947,7 @@ dev = [
[package.metadata]
requires-dist = [
{ name = "anyio", specifier = ">=4.15.1,<5" },
{ name = "deepagents", specifier = ">=0.7.26" },
{ name = "fastapi", specifier = ">=0.141.1" },
{ name = "httpx", specifier = ">=0.28,<1" },