ivknv/yadisk

[Question] Не работает listdir

Ricoroma opened this issue · 2 comments

Здравствуйте. Долгое время пользовался библиотекой без каких-либо проблем, но тут обнаружилась одна: в общем случае функция Client.listdir() работает нормально, но при попытке применить ее к некоторым конкретным папкам вылетает

yadisk.exceptions.RequestTimeoutError: HTTPSConnectionPool(host='cloud-api.yandex.net', port=443): Read timed out. (read timeout=15.0)

В чем может быть причина такого исключения?
Провел несколько тестов: папка над вызывающей ошибку показывается нормально, папка внутри этой ошибочной тоже открывается нормально, но сама (ошибочная) папка не открывается, а падает исключение

Возможно ли, что в папке, приводящей к таймауту, лежат тысячи файлов/папок?

У метода listdir() есть параметр limit, он определяет сколько файлов будет в возвращаться за один запрос, по умолчанию он установлен в 10000, попробуйте поставить значение поменьше (например, 1000 или 500), тогда ответы от сервера будут поступать меньшими кусками:

import yadisk

with yadisk.Client(token="...") as client:
    print(list(client.listdir("/path/to/folder", limit=500)))

В крайнем случае можно увеличить максимальный таймаут (см. параметр timeout).

посмотрел, да, оказалось, что там огромное количество лежит. спасибо, буду делать через лимит+оффсет