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_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'])