[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
).
посмотрел, да, оказалось, что там огромное количество лежит. спасибо, буду делать через лимит+оффсет