lina666
@lina666
Изучаю веб ЯП.

Как можно делать задачу в несколько потоков?

Здравствуйте, на данный момент изучаю вебскрепинг, столкнулся с тем что нужно обрабатывать большое кол-во страниц около 4к, сами страницы парсятся не сложно, делаю это через nightmare.js
Но возникает одна проблема, даже с тем условием что на одну страницу уходит около 2-3с то это ~ 150 минут, что очень не мало.
Возникает вопрос как правильно запускать работу в несколько потоков?
Получается есть массив с 4к ссылками на страниц
Как разбить данный массив скажем на 4 части и одновременно запустить скрипт для всех массивов.

У меня в голове примерно такой вариант действий
Разбить массив на 4 части, сделать функцию ассинхронной и вызвать ее для каждого массива не дожидаясь ответа, т.к скрипт после парсинга страницы просто добавляет данные в бд.

Не знаю на сколько такой подход является правильным, поэтому хочу узнать реализацию решения у более понимающих в этом деле
  • Вопрос задан
  • 56 просмотров
Пригласить эксперта
Ответы на вопрос 2
@d-sem
Можно отправить массив в очередь (например, RabbitMQ) и запускать сколько нужно скриптов-воркеров, работающих с ней.

RabbitMQ из докера заводится одной консольной командой.

В случае сбоя начнете с того же места. При ошибке воркера - можно настроить возврат задания в очередь.
Ответ написан
@vshvydky
pptp.dev
nightmare не стоит уже использовать, это было актуально 3 года назад.
Ответ написан
Ваш ответ на вопрос

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

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