Как я могу написать бесконечную работу в Rails (Web Scraping)? - PullRequest
0 голосов
/ 27 января 2020

Цель : я хочу создать веб-скребок в приложении Rails, которое работает бесконечно и может масштабироваться.

Текущее приложение стека работает: ROR / Heroku / Redis / Postgres

Идея : я думал о запуске задания Sidekiq , которое выполняется каждые n минут и проверяет, есть какие-либо прокси, доступные для очистки (они будут сохранены в таблице со статусом спящий / очищающий).

Если предположить, что есть прокси, доступный для очистки, он проверит (используя Sidekiq API ) если есть работники, готовые запустить другую работу, чтобы очистить имеющийся прокси.

Это означает, что я могу масштабировать скребок, увеличивая количество работников и количество доступных прокси. Если по какой-либо причине задание не выполняется, задание, которое ищет доступные прокси, просто запустит его снова.

Вопросы : Это лучшее решение для моей цели? Является ли использование длительных рабочих мест Sidekiq лучшей идеей или это может взорваться?

Ответы [ 2 ]

1 голос
/ 27 января 2020

Sidekiq предназначен для запуска отдельных заданий, которые являются «единицами работы» для вашей организации.

Вы можете создать свой собственный l oop и, внутри этого l oop, создавать задания для каждой страницы. царапать, но сам l oop не должен быть работой.

0 голосов
/ 27 января 2020

Если вы хотите, чтобы задание выполнялось каждые n минут, вы можете запланировать его.

И, поскольку вы используете Heroku, есть дополнение, которое: https://devcenter.heroku.com/articles/scheduler

Другим решением будет установка заданий cron и планирование их с помощью всякий раз, когда gem.

...