aws boto3 s3 put_object错误处理/测试

时间:2016-08-18 02:47:12

标签: python amazon-web-services amazon-s3 error-handling boto3

如何处理/测试python AWS boto3 s3 put_object的错误?例如:

@using RazorMVC.Models;

@{ 
    List<States> aux = Fill.GiveMeStates();   
    SelectList states = new SelectList(aux, "StateID", "Name");
}
<form>
    @Html.DropDownList("ddlStates", states);

</form>

可能出现的错误是否记录在某处?以下是正确的文档页面(似乎是import boto3 s3 = boto3.resource('s3') bucket = s3.Bucket('foo') bucket.put_object(Key='bar', Body='foobar') 客户端,而不是boto3.client('s3')),如果是,那么错误记录在哪里?

http://boto3.readthedocs.io/en/latest/reference/services/s3.html#S3.Client.put_object

像不存在的存储桶这样的简单错误似乎很容易测试,但是会发生虚假错误,如果是这样,那么如何测试这种错误处理?上传率有限制吗?我尝试了以下操作,并惊讶地看到在运行约2分钟后成功创建了所有10000个文件。当某个速率超过时,s3会阻塞而不是错误吗?

boto3.resource('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) 次调用1次或多次是不错的做法?

1 个答案:

答案 0 :(得分:0)

AWS s3不会根据请求限制上传。限制仅针对大小: 例如:     1个POST请求将上传最大5GB的文件     2个PUT最多可以上传160 GB的大小

您尝试或期望处理的错误只是客户端/浏览器限制,一次上传多个文件。

Boto3上载接口确实具有名为“ config”的参数,您可以在其中指定并发上载:   #要消耗更少的下行带宽,请减少最大并发   config = TransferConfig(max_concurrency = 5)