Ваш max_results=999999
больше 14599 - количество объектов, все результаты выливаются на страницу single .От Bucket.list_blobs()
:
Параметры:
max_results (int) - (Необязательно) Максимальное количество BLOB-объектов на каждой страницерезультатов этого запроса.Неположительные значения игнорируются.По умолчанию используется разумное значение, установленное API.
Я предполагаю, что код тратит много времени на блокировку, ожидая, пока сервер предоставит информацию, необходимую для перебора результатов.
Итак, первое, что я бы попробовал, было бы на самом деле перебирать несколько страниц, используя max_results
меньше, чем количество BLOB-объектов.Может быть 1000 или 2000 и видите влияние на общую продолжительность?
Может быть, даже пытаетесь использовать несколько страниц явно, используя blobs.pages
, как предложено в устаревшем page_token
свойстве doc (выделено мое):
page_token (str) - (Необязательно) Если имеется, верните следующую порцию больших двоичных объектов, используя значение, которое должно соответствовать значению nextPageToken
, возвращенному в предыдущем ответе. Устаревший: используйте свойство pages
возвращенного итератора вместо ручной передачи токена .
Но я не совсем уверен, как заставить несколько страниц быть одновременнотянул.Может как то так?
[(b.name, b.md5_hash) for page in blobs.pages for b in page]