Почему итерация по страницам, возвращаемым paginator, так медленно работает с boto3? - PullRequest
0 голосов
/ 07 марта 2019

Я использую boto3 для извлечения ресурсов из инфраструктуры AWS.Мой код тянет функции из всех 16 регионов.Мне было любопытно, почему это было так медленно (около 20 секунд).Во время исследования я понял, что узким местом является следующая строка кода:

pages = client.get_paginator(paginator_name).paginate(**paginator_args)
client = AWSFacadeUtils.get_client(service, region)
pages = client.get_paginator(paginator_name).paginate(**paginator_args))

resources = []
for page in pages: # This is hella slow
    resources.extend(page[key])

return resources

Почему итерации по страницам такие медленные?

1 Ответ

0 голосов
/ 07 марта 2019

Причина, по которой итерация по страницам является такой медленной, заключается в том, что вы не только перебираете ресурсы, но и тянете ресурсы.

Из документации вот что говорит paginator:

постраничной (** kwargs)

Создание объекта для разбивки на страницы.

Возвращает повторяемый объект. Итерирование по этому объекту даст одна страница ответа за раз.

...