Skip to content

S3BucketObjects

Возможности

  • Использует aiobotocore для неблокирующих операций ввода-вывода.
  • Поддерживает рекурсивный обход "каталогов" с контролем глубины.
  • Группирует "каталоги" по префиксам для уменьшения количества API вызовов.
  • Скачивает результат по страницам для обеспечения эффективного обхода длинных списков объектов.
  • Использует стратегии повторных попыток AWS.
  • Позволяет обрабатывать объекты по мере их получения из AWS.

Подробнее о логике работы рассказано в статье.

Использование

Простой пример

import asyncio
from async_s3 import S3BucketObjects


async def main():
    objects = await S3BucketObjects("my-bucket").list("my-prefix/", max_level=2, max_folders=20)

    for obj in objects:
        print(obj["Key"])

if __name__ == "__main__":
    asyncio.run(main())
Вы можете контролировать глубину рекурсии, указывая параметр max_level, по умолчанию глубина не ограничена.

С помощью max_folders вы можете группировать каталоги по префиксам для уменьшения количества API вызовов.

Полный потенциал async

Обрабатывайте объекты асинхронно, одновременно с получением списка объектов из AWS.

async for page in S3BucketObjects(bucket='my-bucket').iter("my-prefix/", max_level=2, max_folders=10):
    for obj in page:
        print(obj['Key'])

Сгенерированная из исходников документация

S3BucketObjects