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.
This commit is contained in:
PerryLink 2026-09-11 13:32:44 +08:00
parent 8cadfede70
commit e5be1db627

View File

@ -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: