From e5be1db6270ffcf903d0caf01fd3e48765ab7bae Mon Sep 17 00:00:00 2001 From: PerryLink <255665900+PerryLink@users.noreply.github.com> Date: Fri, 11 Sep 2026 13:32:44 +0800 Subject: [PATCH] fix: treat retryable image failures as server-side in the example server ImageError.is_retryable() is true for Fetch and for FetchStatus at 5xx. The example classified by a hardcoded name set, so both were answered 400 invalid_request_error - telling the client its request was malformed and not to retry. --- server-py/main.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/server-py/main.py b/server-py/main.py index 160e106..7bf512e 100644 --- a/server-py/main.py +++ b/server-py/main.py @@ -113,7 +113,11 @@ def prepare_request( resolver = ImageResolver(ReqwestImageFetcher(), OpenCvImagePreprocessor()) multimodal = resolver.resolve(rendered.image_sources, ImageQuota()) except ImageError as error: - status_code = 500 if error.kind in {"Client", "TokenBudget"} else 400 + # `is_retryable` marks the upstream failures a client may retry; `Client` + # is this server's own HTTP client failing to build. + status_code = ( + 500 if error.is_retryable or error.kind in {"Client", "TokenBudget"} else 400 + ) raise RequestError(str(error), status_code) from error images = multimodal.images try: