@xesax

Как можно ускорить загрузку в S3 хранилище?

Я использую python + fastapi и aiobotocore для загрузки файлов в S3 хранилище. Вот мой роутер который отправляет файл в хранилише (Код урезан)

@upload_router.post('')
async def upload_file(
        request: Request, 
        file: Annotated[UploadFile, File()], 
        user_service: Annotated[UserService, Depends(get_user_service)], 
        file_service: Annotated[FileService, Depends(get_file_service)],
        session: Annotated[AsyncSession, Depends(get_async_session)],
    ):
 
    await s3_client.upload_file(file.file, f'{unique_filename}_{file.filename}')


вот код самой загрузки

async def upload_file( self, file_path: bytes, file_name: str):
        try:
            async with self.get_client() as client:
                await client.put_object(
                    Bucket=self.bucket_name,
                    Key=file_name,
                    Body=file_path,
                )
        except ClientError:
            raise ClientError


К примеру: файл размером 20мб загружается 8с
  • Вопрос задан
  • 111 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Everything_is_bad
открыть гугл и вбить туда "s3 upload speed up"
ну и реализаций S3 множество, открывай справочник конкретной и читай, либо спрашивай службу поддержки
Ответ написан
Комментировать
1. Нужно уточнить какой имеется up канал для загрузки. Он является бутылочным горлышком.
2. Выбрать S3 в регионе поближе.
3. Использовать другие способы: можно пробовать закачивать кусками "параллельно", однако при исчерпании ширины канала этот способ может не сильно ускорить.

Кроме того, можно загружать файл в отложенно (через очереди) и тогда это не будет представлять проблему задержки для клиента.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы