簡體   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