Как оптимизировать асинхронное загрузку видео на S3 Python?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как оптимизировать асинхронное загрузку видео на S3 Python?

Сообщение Anonymous »

Я делаю запросы на различные конечные точки API, которые содержат большие файлы MP4 (> 100 МБ) и хочу заполнить их до ведра S3. Я заключил это как задачу ввода/вывода из -за обработки запросов API + потоковую передачу видеоконтента для загрузки, поэтому я решил использовать асинхронное программирование. Моя текущая реализация кода не достаточно эффективна, когда дело доходит до загрузки на S3. Как я подошел к этому, сначала итерация над каждым куском видео, а затем загрузила все это (как показано в коде ниже), но понял, что это заняло несколько минут на видео. Затем я пробовал загрузить каждый итерационный кусок, похожий на эту реализацию, но не видел никаких улучшений. Я почти уверен, что это проблема с тем, как я обращаюсь с каждой частью видеопотока, но не нашел много решений, чтобы помочь. Я могу загрузить видео в свой локальный каталог с каждым видео, показывающим и обработка по задачам, но я заметил на S3, похоже, что видео обрабатываются по одному. Является ли AIOBOTO3 правильным решением асинхронно записать видеофайлы в S3? Это проблема с тем, как я использую aioboto3 < /code> с асинхронным программированием?
Это пример кода: < /p>
import asyncio
import httpx
from botocore.exceptions import ClientError
import aioboto3
from boto3.s3.transfer import TransferConfig
from typing import AsyncIterator
import io

async def async_upload(stream: AsyncIterator[bytes],
destination_key: str,
config: TransferConfig) -> None:
"""
Asynchronously uploads video files via `aioboto3`

Args:
stream (AsyncIterator[bytes]): The video stream broken up into iterable chunks
destination_key (str): The desired destination for the video file
config (TransferConfig): Configuration for using threading
"""

session = aioboto3.Session()

async with session.client('s3') as s3:
buffer = io.BytesIO()
async for chunk in stream:
buffer.write(chunk)

buffer.seek(0)
await s3.upload_fileobj(buffer, bucket_name, destination_key, Config=config)

async def upload_video():
# Example url
url = 'https://api.example.com/somevideo.mp4'

async with httpx.AsyncClient(timeout=httpx.Timeout(20, read=10)) as request:
# Stream to lazily load to memory for faster times
async with request.stream("GET", url) as response:
if response.status_code == 200:
try:
s3_key = f'{folder_name}/{file_name}'
config = TransferConfig(use_threads=True)
await async_upload(response.aiter_bytes(chunk_size=100*1024*1024), s3_key, config) # 100MB chunks

except ClientError as e:
print('Upload Failed', e)
else:
print('Bad Response', response.status_code)

if __name__ == '__main__':

bucket_name = 'Test-Bucket'
folder_name = 'Test'
file_name = 'Video.MP4'

asyncio.run(upload_video())


Подробнее здесь: https://stackoverflow.com/questions/796 ... -s3-python
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как оптимизировать асинхронное загрузку видео на S3 Python?
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Как оптимизировать асинхронное загрузку видео на S3 Python?
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Я пытаюсь загрузить видео с помощью API, но не удалось начать загрузку видео.
    Anonymous » » в форуме Python
    0 Ответы
    79 Просмотры
    Последнее сообщение Anonymous
  • Как оптимизировать загрузку журналов из API в Laravel?
    Anonymous » » в форуме Php
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • Как оптимизировать загрузку журналов из API в Laravel?
    Anonymous » » в форуме Php
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»