Python: загрузка больших файлов S3 быстро - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь программно загрузить очень большой файл размером до 1 ГБ на S3. Как я обнаружил, AWS S3 поддерживает многоэтапную загрузку больших файлов, и я нашел для этого некоторый код на Python. ( ссылка )

Моя точка зрения: скорость загрузки была слишком низкой (почти 1 мин).

Есть ли способ повысить производительность многоэтапной загрузки. Или любая хорошая библиотека поддерживает загрузку S3

Очень признателен за любое предложение.

Ответы [ 2 ]

0 голосов
/ 01 мая 2018

Оставьте мой ответ здесь для ссылки, производительность увеличится в два раза с этим кодом:

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, но я все еще открыт, чтобы получить любое лучшее решение. Спасибо

0 голосов
/ 01 мая 2018

1 минута для 1 ГБ довольно быстрая для такого большого количества данных через Интернет. Вы должны учитывать ускорение передачи S3 для этого варианта использования. https://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html

...