boto配置有一个num_retries
参数用于上传。
NUM_RETRIES
重试失败的AWS服务器请求的次数。如果是boto 从AWS收到错误,它将尝试恢复并重试 请求。默认重试次数为5,但您可以更改 默认使用此选项。
我的理解是此参数控制重试set_content_from_string
等命令的次数。根据文档,如果md5校验和在上载时不匹配,则相同的命令将失败。我的问题是,boto还会在校验和失败时重试,或者num_retry
是否适用于单独的一类失败?
答案 0 :(得分:1)
当boto将文件上传到S3时,它会在本地计算MD5校验和,将该校验和作为Content-MD5
标头发送给S3,然后检查S3服务返回的ETag
标头的值。以前计算的MD5校验和。如果ETag
标头与MD5不匹配,则会引发S3DataError
异常。此异常是ClientError
的子类,boto不会重试客户端错误。
如果我们提供的BadDigest
标头与服务计算的MD5校验和不匹配,S3服务也可能返回Content-MD5
错误。这是来自S3的400响应,也被视为客户端错误,不会重试。