如何处理/测试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次或多次是不错的做法?
答案 0 :(得分:0)
AWS s3不会根据请求限制上传。限制仅针对大小: 例如: 1个POST请求将上传最大5GB的文件 2个PUT最多可以上传160 GB的大小
您尝试或期望处理的错误只是客户端/浏览器限制,一次上传多个文件。
Boto3上载接口确实具有名为“ config”的参数,您可以在其中指定并发上载: #要消耗更少的下行带宽,请减少最大并发 config = TransferConfig(max_concurrency = 5)