我正在使用boto3 1.4.4使用S3.Client.upload_file
处理向S3上传大文件(通常为几百兆字节到几千兆字节)。
默认情况下,botocore会处理重新上传流式传输的boto3文档claim。
- 重试。虽然botocore处理流式上传的重试, 它不可能处理流式传输的重试 下载。此模块处理两种情况的重试 你自己不需要实现任何重试逻辑。
但是,我一直在查看source code,而且我一直无法找到任何证据表明上传实际上已经处理了重试。相反,下载的重试逻辑(使用download_file
或download_fileobj
)为explicit and evident,因此我不知道在上传过程中是否实际处理了重试。
以下是失败上传的部分堆栈跟踪,这就是我首先提出问题的原因:
File "/usr/local/lib/python2.7/dist-packages/boto3/s3transfer/__init__.py", line 642, in upload_file self._multipart_upload(filename, bucket, key, callback, extra_args) File "/usr/local/lib/python2.7/dist-packages/boto3/s3transfer/__init__.py", line 739, in _multipart_upload uploader.upload_file(filename, bucket, key, callback, extra_args) File "/usr/local/lib/python2.7/dist-packages/boto3/s3transfer/__init__.py", line 393, in upload_file filename, '/'.join([bucket, key]), e)) S3UploadFailedError: Failed to upload [file] to [bucket]: (104, 'ECONNRESET')
boto3是否提供了重试上传的保证,如果是,那么这个逻辑在哪里实现/记录?
目前我选择使用retrying套餐重复拨打upload_file