Какой наиболее эффективный способ потоковой передачи данных на S3 с помощью aioboto3?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Какой наиболее эффективный способ потоковой передачи данных на S3 с помощью aioboto3?

Сообщение Anonymous »

Я пытаюсь реализовать настоящее решение потоковой передачи из API в S3 с помощью aioboto3. Поток данных:
  • Извлечение данных из API с использованием разбиения на страницы (каждая страница возвращает N элементов).
  • Потоковая передача каждого элемента. непосредственно на S3.
  • Окончательный файл должен быть сжат (в настоящее время с использованием gzip) и в формате JSON.
Мой текущий подход использует put_object, который требует создания всего содержимого в памяти:

Код: Выделить всё

async with session.client('s3') as s3:
await s3.put_object(
Bucket=bucket,
Key=key,
Body=json_content,  # This holds everything in memory
ContentType='application/json',
ContentEncoding='gzip'
)
Я ожидаю, что нечто подобное возможно:

Код: Выделить всё

async def fetch_data() -> AsyncIterator[dict]:
"""Fetch paginated data from API."""
while has_more_pages:
items = await fetch_page()
for item in items:
yield item

async def stream_to_s3():
async with s3.client() as client:
# Some streaming method that handles compression
await client.stream_to_s3(
data_stream=fetch_data(),
bucket=bucket,
key=key,
compression='gzip'
)
Я вижу, что в aioboto3 есть функция upload_fileobj и возможность многочастной загрузки, но я не уверен, какой наиболее эффективный способ добиться настоящей потоковой передачи без буферизации всего в памяти.
Каково состояние? Современный подход к потоковой передаче данных на S3 с использованием aioboto3? Размер данных может составлять от нескольких КБ до нескольких ГБ.


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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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