Загрузка большого файла из S3 не удается с помощью django

Я загрузил большой zip-файл (6,7 ГБ) на S3 с помощью кода Django:

@retry(stop=stop_after_attempt(3), wait=wait_exponential(multiplier=3), reraise=True)
@aws_exception_handler
def upload_file(self, file_path, key, tags=None, extra_args={}):
    absolute_key = generate_key(key)
    transfer_config = TransferConfig(
        multipart_threshold=1024 * 1024 * 4,
        multipart_chunksize=1024 * 1024 * 16,
        max_io_queue=1000,
        max_concurrency=max_workers,
        use_threads=True
    )
    with open(file_path, 'rb') as data:
        self.s3_client.upload_fileobj(data, self.bucket_name, absolute_key, Config=transfer_config,
                                                 ExtraArgs=extra_args)

    if tags:
        try:
            put_object_tagging_kwargs = {
                'Key': self._get_absolute_key(key),
                'Bucket': self.bucket_name,
                'Tagging': {
                    'TagSet': [
                        {'Key': tag_key, 'Value': tag_value} for tag_key, tag_value in tags.items()
                    ]
                }
            }
            self.s3_client.put_object_tagging(**put_object_tagging_kwargs)
        except Exception as ex:
            raise ex

Затем я попытался загрузить его через UI с этим кодом на сервере (я пробовал каждый из этих методов, и результат был таким же, как я описал ниже):

def check_file_exists_retry_predicate(exception):
return False if isinstance(exception, CloudStorageObjectDoesNotExists) else True

@retry(
    retry=retry_if_exception(check_file_exists_retry_predicate),
    stop=stop_after_attempt(3),
    wait=wait_exponential(multiplier=3),
    reraise=True
)
@aws_exception_handler
def download(self, key, stream=False):
    obj = self.s3_client.get_object(Bucket=self.bucket_name, Key=self.generate_key(key))
    if stream:
        return obj['Body']
    return obj['Body'].read().decode(self._decode_format)

@retry(
    retry=retry_if_exception(check_file_exists_retry_predicate),
    stop=stop_after_attempt(3),
    wait=wait_exponential(multiplier=3),
    reraise=True
)
@aws_exception_handler
def download_file(self, file_path, key):
    file_folder_path = os.path.dirname(file_path)
    if file_folder_path:
        mkdir_by_path(file_folder_path)

    with open(file_path, 'wb') as fh:
        transfer_config = TransferConfig(
        multipart_threshold=1024 * 1024 * 4,
        multipart_chunksize=1024 * 1024 * 16,
        max_io_queue=1000,
        max_concurrency=max_workers,
        use_threads=True
    )
        absolute_key = self.generate_key(key)
        self.s3_client.download_fileobj(self.bucket_name, absolute_key, fh, Config=transfer_config)

Загрузка начинается, но через несколько секунд внезапно останавливается, и Chrome выдает сообщение "проверьте подключение к Интернету". Соединение хорошее (я могу загрузить большой файл из Azure), и это происходит и в Safari. Когда я загружаю этот файл из пользовательского интерфейса S3, он работает.

У вас есть идеи, что проверить или как решить эту проблему?

Вернуться на верх