Как можно увеличить скорость загрузки в 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}')
вот код самой загрузки
class S3Client:
def __init__(
self,
aws_access_key_id: str,
aws_secret_access_key: str,
endpoint_url: str,
region_name: str,
bucket_name: str,
):
self.config = {
"aws_access_key_id": aws_access_key_id,
"aws_secret_access_key": aws_secret_access_key,
"endpoint_url": endpoint_url,
"region_name": region_name
}
self.bucket_name = bucket_name
self.session = get_session()
@asynccontextmanager
async def get_client(self):
async with self.session.create_client("s3", **self.config) as client:
yield client
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 секунд.