Интересно, какие методы вы бы использовали, если на странице есть ссылки на 6 видеороликов, по 300 Мб каждый, и вы хотите загрузить их все. Должен ли я писать свой пользовательский загрузчик?Как скачать файлы с помощью scrapy?
Я привык использовать MediaPipeline, но он использует рамочный планировщик, который имеет следующие вопросы:
- Вы никогда не знаете, какой файл в настоящее время загружены
- Вы не имеете ни малейшего представления о загрузке прогрессе/состояние пока он не сработает.
- Поведение в режиме ожидания: a) Похоже, что тайм-аут применяется ко всей операции загрузки запросов, а не только к паузе при загрузке. Итак, скажем, имея тайм-аут 5 минут, я никогда не смогу загрузить файл, который занимает 6 минут для загрузки. б) Если вы сделаете 5 одновременных длинных запросов, и один из них займет слишком много времени, вы получите все из них (еще не завершенные). Вы должны ограничить количество одновременных запросов на 1 в настройках (что повлияет на весь паук).
Зачем вам нужны отчеты о прогрессе/состоянии? Я уверен, что медиаконвейер регистрирует эти события, и если журналы не видны, возможно, ниже уровень регистратора до INFO (может быть установлен в WARNING). – Granitosaurus
Потому что я повторяю ситуацию, когда половина файлов сбой (при наличии нескольких больших файлов в очереди) с timout/start retrying, и я даже не могу сказать, связано ли это с одним файлом или несколькими файлами или ошибкой в рамках. И это был бы кошмар, если бы это произошло на сайте клиентов. В качестве обходного пути я установил CONCURRENT_REQUESTS_PER_DOMAIN = 1, и, похоже, это лекарство, по крайней мере один раз все закончилось отлично – VladimirLenin
Я всегда использую уровень DEBUG, и он ничего не сообщает. Я добавляю свои собственные сообщения в конвейер, но когда я получаю 6 элементов, я вижу только, что все они начинаются сразу, а затем завершаются один за другим. Я даже не заказывал предмет/фактически запрашивал – VladimirLenin