Skip to content

Commit 08e5043

Browse files
feat(ask): add timeout to ask endpoint
1 parent f6a8d0d commit 08e5043

File tree

1 file changed

+19
-0
lines changed
  • wren-ai-service/src/web/v1/services

1 file changed

+19
-0
lines changed

wren-ai-service/src/web/v1/services/ask.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ class AskRequest(BaseRequest):
2929
enable_column_pruning: bool = False
3030
use_dry_plan: bool = False
3131
allow_dry_plan_fallback: bool = True
32+
timeout: float = Field(default=30.0, description="Timeout for the ask query in seconds.")
3233

3334

3435
class AskResponse(BaseModel):
@@ -175,6 +176,24 @@ async def ask(
175176
self,
176177
ask_request: AskRequest,
177178
**kwargs,
179+
):
180+
try:
181+
await asyncio.wait_for(self._ask(ask_request, **kwargs), timeout=ask_request.timeout)
182+
except asyncio.TimeoutError:
183+
logger.warning(f"ask pipeline - TIMEOUT: {ask_request.query_id}")
184+
self._ask_results[ask_request.query_id] = AskResultResponse(
185+
status="failed",
186+
error=AskError(
187+
code="OTHERS",
188+
message="Query timed out",
189+
),
190+
trace_id=kwargs.get("trace_id"),
191+
)
192+
193+
async def _ask(
194+
self,
195+
ask_request: AskRequest,
196+
**kwargs,
178197
):
179198
trace_id = kwargs.get("trace_id")
180199
results = {

0 commit comments

Comments
 (0)