чтение файла из s3 (boto3) в многопоточном режиме - PullRequest
1 голос
/ 13 октября 2019

Я хотел бы обработать огромную папку с XML-файлами, расположенными в сегментах s3. Я хотел бы сделать это распределенным способом в Python.

Поэтому я сначала определяю paginator с библиотекой boto3, настраивая (например) размер страницы 100 элементов (см. * 1005). * doc )

profile = boto3.Session()
client = profile.client('s3')
paginator = client.get_paginator('list_objects')

page_iterator = paginator.paginate(
    Bucket='my-bucket',Prefix='my-prefix',
    PaginationConfig={'PageSize': 100}
)

после этого с помощью пакета concurrent.futures я создаю пул 10 потоков, каждый из которых вызывает my_process_method:

def my_process_method(pages):
    for page in pages['Contents']:
        # ...process...

with concurrent.futures.ThreadPoolExecutor(10) as executor:
    executor.map(my_process_method, page_iterator)

Я быхотелось бы знать, есть ли какие-то недостатки в этом примере, например. одновременные boto3 вызовы API могут вызывать какие-то проблемы

...