googleapis / googleapis/python-aiplatform

[Agent Engines] `_wrap_async_stream_query_operation` blocks asyncio event loop due to synchronous gRPC iteration

Aperta
#7,136 1 commento 0 reazioni 0 assegnatari Vedi su GitHub
api: vertex-ai
Lingua principale
Python
Stelle
905
Fork
465
Merge medio
1g 13h
PR unite (30g)
44

Descrizione

`agent_engine.async_stream_query(...)` blocks the calling `asyncio` event loop thread during stream generation.

In `vertexai/agent_engines/_agent_engines.py`, `_wrap_async_stream_query_operation` wraps a synchronous client call in an `async def` and uses a blocking `for` loop:

```python
# CURRENT IMPLEMENTATION (vertexai/agent_engines/_agent_engines.py)
def _wrap_async_stream_query_operation(*, method_name: str):
async def _method(self, **kwargs):
# 1. Uses sync client instead of self.execution_async_client
response = self.execution_api_client.stream_query_reasoning_engine(...)
# 2. Synchronous iteration blocks the asyncio event loop on socket reads
for chunk in response:
for parsed_json in _utils.yield_parsed_json(chunk):
if parsed_json is not None:
yield parsed_json
return _method
```

### Reproduction:
```python
import asyncio
from vertexai import agent_engines

agent = agent_engines.get("projects/

/locations//reasoningEngines/")

async def main():
async for chunk in agent.async_stream_query(user_id="u", message="Long prompt"):
pass

asyncio.run(main(), debug=True)
# Result: Emits "Executing took X.XX seconds" because the thread is blocked on socket reads without yielding.
```

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Start in vertexai/agent_engines/_agent_engines.py at _wrap_async_stream_query_operation and compare the synchronous execution_api_client call with self.execution_async_client. Reproduce the stream with asyncio.run(..., debug=True); done means async_stream_query no longer blocks the event-loop thread during socket reads while still yielding parsed chunks.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
grpc, python
Ambito
api, backend
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Attiva
Chiarezza
Specificata chiaramente
Idoneità per principianti
72/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.