我正在尝试以编程方式在 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/