Платформа для парсера 24/7 и архитектура?

Какую платформу выбрать для парсера.
Есть паук который работает через мультипроцессинг и в 20-40 процессах ждёт ответа от сервера. Ввиду особенности необходимой информации вопрос больше не в самом парсинге. Так как средняя необходимая скорость сейчас 9 запросов в секунду(может стать больше) то интересует чужой опыт выбора облачного решения под подобную задачу. И да время простоя в 10-15 секунд накапливает дополнительный объём запросов что необходимо обработать. Хранения информации в рантайме достаточно, интересует именно устойчивость.

Ну и в целом можно покритиковать подход решения на сколько удачен мультипроцессинг для ожидания ответа от сервера и где может быть бутылочное горлышко у подобной архитектуры.

Upd...
На сколько я понимаю serverless cloud не подходит для этой задачи ввиду оплаты по процессорному времени, а он постоянно занят. Моя теория что подходить VPS на подобие почтового сервера который априори рассчитан на большое количество маленьких запросов.
  • Вопрос задан
  • 494 просмотра
Решения вопроса 3
@bacon
1. Мультипроцессинг для IO Bound неудачен, тут подходит потоки, а лучше async
2. Разделить процесс получение данных из сети и обработки этих данных.
3. А вот для обработки данных, как раз мультипроцессинг может и помочь
4. И да, используйте очереди, вроде по описанию у вас их нет.
В итоге, минимум есть job'ы которые получают данные и job'ы которые эти данные обрабатывают.
Ответ написан
CellycoMobiles
@CellycoMobiles
indi developer @CellycoMobiles
Мне в свое время мозги вправил StormCrawler. Достаточно подробно описана инфраструктура. Понравились решения для фетчинга и индексации.
Переделал на микросервисы. Считаю хорошим решением для старта.
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Добавлю то, о чём ещё не упоминали.
Вот как бы сама архитектура "на пальцах":
0-[Командуем: url task manager: queue]
1-1234567890 [льём: head-less browser/etc.]
2-1234567890 [decomposer]
3-123456...
....
N-1234567890 [сохраняем: db data insert]
Goto 0

Строки - уровни обработки, числа - параллельные единичные потоки.

1. Задача - динамическая коммутация между функциональными потоками соседних слоёв.
Т.е. поток после отработки никогда не закрывается, а ждёт нового задания от любого блока с уровня выше (меньший номер строки)!
В этом - вся "соль" скорости обработки!

2. Копите знания: Всегда кэшируйте "скелет" нахождения данных (динамические правила) при интеллектуальной декомпозиции разметки - это сильно сокращает время детекции уже встречавшихся блоков (одинаковый блок кода или шаблон страницы, одинаковая CMS, и т.д.).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы