From 119873bc2be2251a0c7a7827eff7716358d46d91 Mon Sep 17 00:00:00 2001 From: rzeta-10 Date: Mon, 23 Mar 2026 15:32:22 +0530 Subject: [PATCH] Add timeout to Akto API requests and improve error message formatting in health check --- litellm/integrations/akto/akto_logger.py | 1 + .../health_endpoints/_health_endpoints.py | 5 ++- .../test_akto_logger.py | 31 +++++++++++++------ 3 files changed, 27 insertions(+), 10 deletions(-) diff --git a/litellm/integrations/akto/akto_logger.py b/litellm/integrations/akto/akto_logger.py index e0b96ca6cd6..2aa441c44c5 100644 --- a/litellm/integrations/akto/akto_logger.py +++ b/litellm/integrations/akto/akto_logger.py @@ -181,6 +181,7 @@ class AktoLogger(CustomLogger): "content-type": "application/json", "Authorization": self.akto_api_key, }, + "timeout": 10, } async def async_health_check(self) -> dict: diff --git a/litellm/proxy/health_endpoints/_health_endpoints.py b/litellm/proxy/health_endpoints/_health_endpoints.py index 8b3f7951466..5695d609e3c 100644 --- a/litellm/proxy/health_endpoints/_health_endpoints.py +++ b/litellm/proxy/health_endpoints/_health_endpoints.py @@ -349,7 +349,10 @@ async def health_services_endpoint( # noqa: PLR0915 response = await akto_logger.async_health_check() except Exception as e: verbose_proxy_logger.warning("Akto health check error: %s", e) - return {"status": "unhealthy", "error_message": "Akto health check failed"} + return { + "status": "unhealthy", + "error_message": "Akto health check failed", + } return { "status": response["status"], "message": ( diff --git a/tests/logging_callback_tests/test_akto_logger.py b/tests/logging_callback_tests/test_akto_logger.py index 15ff03fc15e..32824d8be5b 100644 --- a/tests/logging_callback_tests/test_akto_logger.py +++ b/tests/logging_callback_tests/test_akto_logger.py @@ -255,15 +255,25 @@ async def test_async_log_failure_with_status_code(logger, sample_kwargs): def test_extract_client_ip_forwarded(): - assert AktoLogger.extract_client_ip( - {"proxy_server_request": {"headers": {"x-forwarded-for": "1.2.3.4, 5.6.7.8"}}} - ) == "1.2.3.4" + assert ( + AktoLogger.extract_client_ip( + { + "proxy_server_request": { + "headers": {"x-forwarded-for": "1.2.3.4, 5.6.7.8"} + } + } + ) + == "1.2.3.4" + ) def test_extract_client_ip_real_ip(): - assert AktoLogger.extract_client_ip( - {"proxy_server_request": {"headers": {"x-real-ip": "10.0.0.1"}}} - ) == "10.0.0.1" + assert ( + AktoLogger.extract_client_ip( + {"proxy_server_request": {"headers": {"x-real-ip": "10.0.0.1"}}} + ) + == "10.0.0.1" + ) def test_extract_client_ip_fallback(): @@ -274,9 +284,12 @@ def test_extract_client_ip_fallback(): def test_extract_request_path_from_metadata(): - assert AktoLogger.extract_request_path( - {"metadata": {"user_api_key_request_route": "/v1/embeddings"}} - ) == "/v1/embeddings" + assert ( + AktoLogger.extract_request_path( + {"metadata": {"user_api_key_request_route": "/v1/embeddings"}} + ) + == "/v1/embeddings" + ) def test_extract_request_path_fallback():