Boto 是否会重试失败的 md5 检查?
Does Boto retry on failed md5 checks?
boto 配置有一个 num_retries
参数用于上传。
num_retries
The number of times to retry failed requests to an AWS server. If boto
receives an error from AWS, it will attempt to recover and retry the
request. The default number of retries is 5 but you can change the
default with this option.
我的理解是,此参数控制重试set_content_from_string
等命令的次数。根据文档,如果 md5 校验和在上传时不匹配,则相同的命令将失败。我的问题是,boto 是否也会在校验和失败时重试,或者 num_retry
是否适用于单独的 class 失败?
当 boto 将文件上传到 S3 时,它会在本地计算 MD5 校验和,将该校验和作为 Content-MD5
header 发送到 S3,然后检查 ETag
header return 由 S3 服务根据先前计算的 MD5 校验和编辑。如果 ETag
header 与 MD5 不匹配,则会引发 S3DataError
异常。此异常是 ClientError
的子类,boto 不会重试客户端错误。
如果我们提供的 Content-MD5
header 与服务计算的 MD5 校验和不匹配,S3 服务也可能 return 出现 BadDigest
错误.这是来自 S3 的 400 响应,也被视为客户端错误,不会重试。
boto 配置有一个 num_retries
参数用于上传。
num_retries
The number of times to retry failed requests to an AWS server. If boto receives an error from AWS, it will attempt to recover and retry the request. The default number of retries is 5 but you can change the default with this option.
我的理解是,此参数控制重试set_content_from_string
等命令的次数。根据文档,如果 md5 校验和在上传时不匹配,则相同的命令将失败。我的问题是,boto 是否也会在校验和失败时重试,或者 num_retry
是否适用于单独的 class 失败?
当 boto 将文件上传到 S3 时,它会在本地计算 MD5 校验和,将该校验和作为 Content-MD5
header 发送到 S3,然后检查 ETag
header return 由 S3 服务根据先前计算的 MD5 校验和编辑。如果 ETag
header 与 MD5 不匹配,则会引发 S3DataError
异常。此异常是 ClientError
的子类,boto 不会重试客户端错误。
如果我们提供的 Content-MD5
header 与服务计算的 MD5 校验和不匹配,S3 服务也可能 return 出现 BadDigest
错误.这是来自 S3 的 400 响应,也被视为客户端错误,不会重试。