From 7355df7ea52022980799ec932dac0e7f84bf48d1 Mon Sep 17 00:00:00 2001 From: Alexsander Hamir Date: Thu, 5 Feb 2026 15:43:13 -0800 Subject: [PATCH] fix(prometheus): use return_exceptions=True for budget metric lookups Make asyncio.gather resilient to partial failures. If key, team, or user lookup raises, log at debug level and allow the others to complete. Prevents one failing lookup from blocking the rest. --- litellm/integrations/prometheus.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/litellm/integrations/prometheus.py b/litellm/integrations/prometheus.py index 359e902a50b..56a9a54d8e8 100644 --- a/litellm/integrations/prometheus.py +++ b/litellm/integrations/prometheus.py @@ -1189,7 +1189,7 @@ class PrometheusLogger(CustomLogger): _user_spend = _metadata.get("user_api_key_user_spend", None) _user_max_budget = _metadata.get("user_api_key_user_max_budget", None) - await asyncio.gather( + results = await asyncio.gather( self._set_api_key_budget_metrics_after_api_request( user_api_key=user_api_key, user_api_key_alias=user_api_key_alias, @@ -1210,7 +1210,13 @@ class PrometheusLogger(CustomLogger): user_max_budget=_user_max_budget, response_cost=response_cost, ), + return_exceptions=True, ) + for i, r in enumerate(results): + if isinstance(r, Exception): + verbose_logger.debug( + f"[Non-Blocking] Prometheus: Budget metric lookup {['key', 'team', 'user'][i]} failed: {r}" + ) def _increment_top_level_request_and_spend_metrics( self,