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