Python:快速上传大文件S3

时间:2018-04-30 17:06:41

标签: python amazon-s3 upload boto3

我试图在S3上以编程方式上传一个大到1GB的非常大的文件。我发现AWS S3支持大型文件的多部分上传,我发现了一些Python代码。 (link

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

有没有办法提高分段上传的效果。或任何好的库支持S3上传

非常感谢任何建议。

2 个答案:

答案 0 :(得分:1)

1 GB的1分钟对于互联网上的大量数据而言非常快。您应该考虑此用例的S3传输加速。 https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html

答案 1 :(得分:1)

将我的答案留在这里以获取参考,使用此代码将性能提高两倍:

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上传的性能,但我仍然愿意接受任何更好的解决方案。感谢