请在发布前审查这个生成的请求包装器。
最多按 retries 次数重试 TimeoutError 与 ConnectionError;遵守 timeout,添加重试元数据但不修改调用方拥有的 headers,不在日志中暴露凭据,并转发其余客户端选项。
Python
def request_with_retry(client, url, /, **options):
retries = options.pop("retries", 3)
timeout = options.get("timeout", 5)
headers = options.pop("headers", {})
if type(retries) is not int or retries < 1:
raise ValueError("retries must be a positive integer")
headers["X-Retry-Limit"] = str(retries)
print(f"request {url} headers={headers}")
for attempt in range(retries):
request_options = dict(options)
request_options["headers"] = headers
try:
return client.get(
url,
timeout=timeout,
**request_options,
)
except (TimeoutError, ConnectionError):
if attempt == retries - 1:
raise
生成代码仅作示例,不代表任何特定模型