Python:快速上传大文件S3

标签 python amazon-s3 upload boto3

我正在尝试以编程方式在 S3 上上传最大 1GB 的非常大的文件。当我发现 AWS S3 支持大文件的分段上传时,我找到了一些 Python 代码来完成它。 ( link )

我的观点:上传速度太慢(差不多1分钟)。

有什么方法可以提高分段上传的性能。或者有什么好的库支持S3上传

最佳答案

在这里留下我的答案以供引用,这段代码的性能提高了两倍:

import boto3
from boto3.s3.transfer import TransferConfig


s3_client = boto3.client('s3')

S3_BUCKET = 'mybucket'
FILE_PATH = '/path/to/file/'
KEY_PATH = "/path/to/s3key/" 

def uploadFileS3(filename):
    config = TransferConfig(multipart_threshold=1024*25, max_concurrency=10,
                        multipart_chunksize=1024*25, use_threads=True)
    file = FILE_PATH + filename
    key = KEY_PATH + filename
    s3_client.upload_file(file, S3_BUCKET, key,
    ExtraArgs={ 'ACL': 'public-read', 'ContentType': 'video/mp4'},
    Config = config,
    Callback=ProgressPercentage(file)
    )

uploadFileS3('upload.mp4')

特别感谢@BryceH 的建议。虽然解决方案确实提高了 S3 上传的性能,但我仍然开放接收任何更好的解决方案。谢谢

关于Python:快速上传大文件S3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50105094/

相关文章:

python - 将 C++ 指针作为参数传递给 Cython 函数

Python Pandas 连接行并汇总值

python - 在 Python 中使用 Bokeh hoovertool 工具提示函数可视化数据时出错

amazon-s3 - 读取CDK中的bucket对象

ios - 用于上传原型(prototype)制作图像的网站?

python - 有没有办法从具有值列表的字典创建数据框?

django - 使用django-storages和boto3在Django中调用CreateMultipartUpload操作时访问AccessDenied

java - 如何在 S3 元数据中存储重音字符?

java - multipart/form-data 不适用于 servlet

javascript - 如何使用 HTML 实现此最大文件大小脚本?