Boto重试失败的md5检查吗?

时间:2015-02-26 01:06:16

标签: python amazon-s3 boto

boto配置有一个num_retries参数用于上传。

  

NUM_RETRIES

     

重试失败的AWS服务器请求的次数。如果是boto   从AWS收到错误,它将尝试恢复并重试   请求。默认重试次数为5,但您可以更改   默认使用此选项。

我的理解是此参数控制重试set_content_from_string等命令的次数。根据文档,如果md5校验和在上载时不匹配,则相同的命令将失败。我的问题是,boto还会在校验和失败时重试,或者num_retry是否适用于单独的一类失败?

1 个答案:

答案 0 :(得分:1)

当boto将文件上传到S3时,它会在本地计算MD5校验和,将该校验和作为Content-MD5标头发送给S3,然后检查S3服务返回的ETag标头的值。以前计算的MD5校验和。如果ETag标头与MD5不匹配,则会引发S3DataError异常。此异常是ClientError的子类,boto不会重试客户端错误。

如果我们提供的BadDigest标头与服务计算的MD5校验和不匹配,S3服务也可能返回Content-MD5错误。这是来自S3的400响应,也被视为客户端错误,不会重试。