[英]aws boto3 s3 put_object error handling/testing
应如何处理/测试 python AWS boto3 s3 put_object 的错误? 例如:
import boto3
s3 = boto3.resource('s3')
bucket = s3.Bucket('foo')
bucket.put_object(Key='bar', Body='foobar')
可能出现的错误是否记录在某处? 以下甚至是正确的文档页面(它似乎是用于boto3.client('s3')
客户端,而不是boto3.resource('s3')
),如果是这样,错误记录在哪里?
http://boto3.readthedocs.io/en/latest/reference/services/s3.html#S3.Client.put_object
像不存在的存储桶这样的简单错误似乎很容易测试,但是否会发生虚假错误,如果是这样,如何测试这种错误处理? 上传速度有限制吗? 我尝试了以下操作,并惊讶地看到在运行大约 2 分钟后成功创建了所有 10000 个文件。 当超过某个速率时,s3 是否会阻塞而不是错误?
from concurrent.futures import ThreadPoolExecutor
import boto3
s3 = boto3.resource('s3')
bucket = s3.Bucket('foo')
def put(i):
bucket.put_object(Key='bar/%d' % i, Body='foobar')
executor = ThreadPoolExecutor(max_workers=1024)
for i in range(10000):
executor.submit(put, i)
如果发生某些错误,重试put_object
调用 1 次或多次是一种好习惯吗?
AWS s3 不限制基于请求的上传。 限制仅适用于大小:例如:1 POST 请求将上传最大 5GB 的文件 2 PUT 最多可上传 160 GB 的大小
您尝试或期望处理的错误只不过是一次上传多个文件时的客户端/浏览器限制。
Boto3 上传接口确实有一个名为“config”的参数,您可以在其中指定并发上传: # 为了消耗更少的下行带宽,降低最大并发 config = TransferConfig(max_concurrency=5)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.