繁体   English   中英

aws boto3 s3 put_object 错误处理/测试

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM