forked from phoenix-oss/llama-stack-mirror
fix: catch TimeoutError in place of asyncio.TimeoutError (#2131)
# What does this PR do? As per docs [1], since python 3.11 wait_for() raises TimeoutError. Since we currently support python 3.10+, we have to catch both. [1]: https://docs.python.org/3.12/library/asyncio-task.html#asyncio.wait_for [//]: # (If resolving an issue, uncomment and update the line below) [//]: # (Closes #[issue-number]) ## Test Plan No explicit testing; just code hardening to reflect docs. [//]: # (## Documentation) Signed-off-by: Ihar Hrachyshka <ihar.hrachyshka@gmail.com>
This commit is contained in:
parent
dd7be274b9
commit
db21eab713
3 changed files with 4 additions and 4 deletions
|
@ -99,7 +99,7 @@ class ProviderImpl(Providers):
|
||||||
try:
|
try:
|
||||||
health = await asyncio.wait_for(impl.health(), timeout=timeout)
|
health = await asyncio.wait_for(impl.health(), timeout=timeout)
|
||||||
return api_name, health
|
return api_name, health
|
||||||
except asyncio.TimeoutError:
|
except (asyncio.TimeoutError, TimeoutError):
|
||||||
return (
|
return (
|
||||||
api_name,
|
api_name,
|
||||||
HealthResponse(
|
HealthResponse(
|
||||||
|
|
|
@ -630,7 +630,7 @@ class InferenceRouter(Inference):
|
||||||
continue
|
continue
|
||||||
health = await asyncio.wait_for(impl.health(), timeout=timeout)
|
health = await asyncio.wait_for(impl.health(), timeout=timeout)
|
||||||
health_statuses[provider_id] = health
|
health_statuses[provider_id] = health
|
||||||
except asyncio.TimeoutError:
|
except (asyncio.TimeoutError, TimeoutError):
|
||||||
health_statuses[provider_id] = HealthResponse(
|
health_statuses[provider_id] = HealthResponse(
|
||||||
status=HealthStatus.ERROR,
|
status=HealthStatus.ERROR,
|
||||||
message=f"Health check timed out after {timeout} seconds",
|
message=f"Health check timed out after {timeout} seconds",
|
||||||
|
|
|
@ -114,7 +114,7 @@ def translate_exception(exc: Exception) -> HTTPException | RequestValidationErro
|
||||||
return HTTPException(status_code=400, detail=str(exc))
|
return HTTPException(status_code=400, detail=str(exc))
|
||||||
elif isinstance(exc, PermissionError):
|
elif isinstance(exc, PermissionError):
|
||||||
return HTTPException(status_code=403, detail=f"Permission denied: {str(exc)}")
|
return HTTPException(status_code=403, detail=f"Permission denied: {str(exc)}")
|
||||||
elif isinstance(exc, TimeoutError):
|
elif isinstance(exc, asyncio.TimeoutError | TimeoutError):
|
||||||
return HTTPException(status_code=504, detail=f"Operation timed out: {str(exc)}")
|
return HTTPException(status_code=504, detail=f"Operation timed out: {str(exc)}")
|
||||||
elif isinstance(exc, NotImplementedError):
|
elif isinstance(exc, NotImplementedError):
|
||||||
return HTTPException(status_code=501, detail=f"Not implemented: {str(exc)}")
|
return HTTPException(status_code=501, detail=f"Not implemented: {str(exc)}")
|
||||||
|
@ -139,7 +139,7 @@ async def shutdown(app):
|
||||||
await asyncio.wait_for(impl.shutdown(), timeout=5)
|
await asyncio.wait_for(impl.shutdown(), timeout=5)
|
||||||
else:
|
else:
|
||||||
logger.warning("No shutdown method for %s", impl_name)
|
logger.warning("No shutdown method for %s", impl_name)
|
||||||
except asyncio.TimeoutError:
|
except (asyncio.TimeoutError, TimeoutError):
|
||||||
logger.exception("Shutdown timeout for %s ", impl_name, exc_info=True)
|
logger.exception("Shutdown timeout for %s ", impl_name, exc_info=True)
|
||||||
except (Exception, asyncio.CancelledError) as e:
|
except (Exception, asyncio.CancelledError) as e:
|
||||||
logger.exception("Failed to shutdown %s: %s", impl_name, {e})
|
logger.exception("Failed to shutdown %s: %s", impl_name, {e})
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue