fix(router): type the request retry budget view

This commit is contained in:
Hieu Vu 2026-10-26 14:12:34 +07:00
parent 516bf8e97b
commit b8dcacd8bb

View file

@ -8921,7 +8921,12 @@ class Router:
## ADD RETRY TRACKING TO METADATA - used for spend logs retry tracking
_metadata["attempted_retries"] = 0
_metadata["max_retries"] = num_retries # Updated after overrides in exception handler
initial_budget_exhausted: Final = max_retries_per_request_hit(kwargs, litellm.num_retries_per_request)
budget_request_kwargs: Final[Mapping[str, object]] = cast( # cast-ok: kwargs keys are request parameter names
Mapping[str, object], kwargs
)
initial_budget_exhausted: Final = max_retries_per_request_hit(
budget_request_kwargs, litellm.num_retries_per_request
)
try:
self._handle_mock_testing_rate_limit_error(model_group=model_group, kwargs=kwargs)
# if the function call is successful, no exception will be raised and we'll break out of the loop
@ -9014,12 +9019,12 @@ class Router:
all_deployments=_all_deployments,
)
if not max_retries_per_request_hit(kwargs, litellm.num_retries_per_request):
if not max_retries_per_request_hit(budget_request_kwargs, litellm.num_retries_per_request):
await asyncio.sleep(retry_after)
for current_attempt in range(num_retries):
budget_exhausted_before_call: bool = max_retries_per_request_hit(
kwargs, litellm.num_retries_per_request
budget_request_kwargs, litellm.num_retries_per_request
)
try:
# Update retry tracking metadata before each retry attempt
@ -9085,7 +9090,7 @@ class Router:
if skipped_ids:
kwargs["_retry_skipped_deployment_ids"] = skipped_ids # rebind-ok: the next attempt reads it
if budget_exhausted_before_call:
raise e
raise
_timeout = self._time_to_sleep_before_retry(
e=e,
remaining_retries=remaining_retries,
@ -9093,7 +9098,7 @@ class Router:
healthy_deployments=_healthy_deployments,
all_deployments=_all_deployments,
)
if not max_retries_per_request_hit(kwargs, litellm.num_retries_per_request):
if not max_retries_per_request_hit(budget_request_kwargs, litellm.num_retries_per_request):
await asyncio.sleep(_timeout)
if type(original_exception) in litellm.LITELLM_EXCEPTION_TYPES: