审查生成的重试包装器

来自 *args 与 **kwargs
Python 3.14 高级 10分钟 找出 3处问题

请在发布前审查这个生成的请求包装器。

最多按 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

生成代码仅作示例,不代表任何特定模型

在试验场中打开
报告错误