TL;DR
- Пакетное сканирование тысяч URL — это проблема управления очередями, прежде всего это проблема HTTP.
- Используйте ограниченную конкуренцию, таймауты на запросы, повторные попытки с джиттером, контрольные точки и идемпотентный ключ результата.
asyncioиaiohttpхорошо работают для простых публичных страниц; рендеринг браузера или обнаружение сайта следует перенести на сервис обхода.- Nstdata Crawl лучше подходит, когда пакет требует рендеринг страниц, артефакты страниц или контролируемый сбор на уровне сайта, а не простые получения.
Почему большие пакеты URL терпят неудачу
Начните с Nstdata Crawl, когда сбор данных требует рендеринга или состояния задачи.
Пакетный сканер терпит неудачу, когда скорость отправки, ограничения целевого сайта, повторы попыток и хранение результатов рассматриваются как один цикл. Тысяча URL может привести к дублированию записей, бурям повторных попыток, открытым соединениям и отсутствию надежного способа возобновления после остановки работника или процесса. Начните с Nstdata Crawl, когда пакет является задачей обхода, а не списком простых HTTP-запросов.
Первое проектное решение — это идентичность записи. Используйте канонический URL плюс хеш конфигурации получения, а не позицию во входном файле. Запишите состояния queued, running, succeeded, failed, и dead_letter, с последней ошибкой и количеством попыток. Это делает частичный запуск восстанавливаемым.
Асинхронный дизайн, который остается ограниченным
Самый безопасный шаблон — это производитель, ограниченный пул рабочих процессов и надежный вывод результатов. документирует шаблон для асинхронных HTTP-запросов; является правильным ориентиром для жизненного цикла сеанса и таймаутов.





