Известные проблемы
Очень медленная загрузка некоторых типов файлов на Яндекс.Диск
REST API Яндекс.Диск ограничивает скорость загрузки файлов на Диск до 128 KiB/s для определенных MIME типов файлов. Если быть точнее, троттлинг осуществляется в зависимости от значения media_type (см. yadisk.Client.get_meta). Судя по всему ограничение скорости действует на 3 типа файлов (media type):
data(.db, .dat, etc.)compressed(.zip, .gz, .tgz, .rar, .etc)video(.3gp, .mp4, .avi, etc.)
Ограничение скорости предопределяется в момент получения ссылки для загрузки файла на диск (см. yadisk.Client.get_upload_link). Содержимое загружаемого файла не имеет значения.
Причина, по которой эта проблема не наблюдается при попытке загрузить файл через официальный сайт, заключается в том, что ограничение скорости не применяется для внутренних сервисов (сайт Яндекс.Диска использует промежуточный внутренний API для получения ссылок).
Хотя и не понятно, в чем смысл такого ограничения, это точно не баг.
Один из способов обхода данной проблемы - это загрузка файлов с измененным расширением (или без расширения). Например, если вы хотите загрузить на Диск файл "my_database.db", вы можете изначально загрузить его под именем "my_database.some_other_extension" и после загрузки переименовать обратно в "my_database.db".
Другой способ - это спуфинг строки user-agent (см. PR#57). Начиная с версии 3.3.0, спуфинг строки user-agent включен по умолчанию (см. параметр spoof_user_agent метода yadisk.Client.get_upload_link()).
Низкая скорость загрузки файлов на Диск под Windows при использовании requests
Если вы используете requests и столкнулись с низкой скоростью загрузки файлов на Диск под Windows, то причиной может быть стандартная библиотека Python, которая внутри использует select() для ожидания сокетов. Наилучшее решение этой проблемы - это использовать другую HTTP библиотеку (например, httpx, см. Доступные реализации сессий)