gpt4 book ai didi

python - 使用 boto3.resource.put_object() 和 boto3.s3.transfer.upload_file() 将文件上传到 S3 有什么区别

转载 作者:太空宇宙 更新时间:2023-11-03 11:42:34 32 4
gpt4 key购买 nike

当我引用将文件上传到 S3 的示例代码时,我发现了以下两种方法。

使用 boto3.resource.put_object():

s3_resource = boto3.resource('s3')
s3_resource.put_object(Bucket = BUCKET, Key = 'test', Body= b'some data')

使用 boto3.s3.transfer.upload_file():

client = boto3.client('s3')
transfer = S3Transfer(client)
transfer.upload_file('/my_file', BUCKET, 'test')

我无法弄清楚这两种方式之间的区别。在任何特定用例中使用一个比另一个有什么优势。任何人都可以请详细说明。谢谢。

最佳答案

  • put_object 方法直接映射到低级 S3 API 请求。它将尝试在一个请求中发送整个正文。没有多部分支持 boto3 docs
  • upload_file 方法由 S3 传输管理器处理,这意味着它会在必要时自动在后台为您处理分段上传。
    • 在以下情况下自动切换到多部分传输文件超过特定大小阈值
    • 并行上传/下载文件
    • 进度回调以监控传输
    • 重试。虽然 botocore 处理流式上传的重试,它不可能处理流式传输的重试下载。该模块处理这两种情况的重试,因此您不需要自己实现任何重试逻辑。
    • 这个模块有一组合理的默认值。它还可以让你配置传输过程的许多方面,包括:多部分阈值大小、最大并行下载、套接字超时、重试次数。 boto3 docs

关于python - 使用 boto3.resource.put_object() 和 boto3.s3.transfer.upload_file() 将文件上传到 S3 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46506864/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com