hrabry
@hrabry

Как организовать очередь http запросов для парсера?

Делаю парсер с возможностью отправлять в асинхронном режиме множество http запросов.
Использую laravel 6, mysql, guzzle, dom crawler.
Есть таблица в которой хранятся визиты с url, rule_id, scheduled_visit_at, visited_at, response_body например. rule_id это ID правила в котором хранится настройки для парсинга конкретных ссылок. У этих настроек есть условие например ограничение 10 параллельных запросов к одному ресурсу, 50 к другому и тд ... А так же отдельно есть настройка для ограничения параллельных запросов на весь сервер например 200.

Запускать 200 процессов воркеров очереди не вариант, так как это по идеи накладно по ресурсам.
Хотелось бы написать какой нить скрипт типа демона что бы он крутился постоянно в фоне, в котором было бы что то типа пула параллельных запросов, если на данный момент в пуле меньше лимита то чекаем есть ли что-то взять в оборот сейчас.

Такое реально вообще, если да то какие библиотеки взять ?
Или как то по другому решить эту задачу?
Читал про асинхронные фреймворки, типа react, amphp в них есть не блокирующие I/O библиотеки для http и mysql. подойдут ли они для этого ?
  • Вопрос задан
  • 207 просмотров
Пригласить эксперта
Ответы на вопрос 1
@d-sem
Задачи на парсинг сохранять в БД и отправлять в очередь (RabbitMQ, например).

Из очереди слушать воркерами в нужном количестве.

В случае успеха - менять в исходной таблице статус.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Rerooms Москва
от 120 000 до 170 000 ₽
от 40 000 до 60 000 ₽
Самсон Воронеж
от 100 000 до 150 000 ₽
27 янв. 2021, в 00:37
11111 руб./за проект
26 янв. 2021, в 23:30
3000 руб./за проект
26 янв. 2021, в 23:07
1000 руб./за проект