Работая с длинными процессами в Rails, прежде всего сталкиваешься с тем обстоятельством, что запушенный процесс порой крайне непросто погасить. Разумеется, всегда остается
kill -9 <pid>
, но речь о том, чтобы залогиненный (посредством devise
) юзверь мог не только запустить работу, но и прервать ее в любой момент, а не о том, чтобы погасить всю аппликуху. Во время работы длинного процесса даже разорвать сессию, нажав стандартную ссылку, не получается.
Конкретный пример: получаем небольшими порциями френдов и фолловеров из API твиттера, сравниваем два полученных массива, соответственно, получаем третий - перечень ID аккаунтов, предназначенных для фолловинга или анфолловинга (это уже, с паузами, минут 10 как минимум, если акк раскрученный и содержит хотя бы 10К или 15К читателей); и далее приступаем к собственно фолловингу/анфолловингу опять-таки между длинными (до 15 минут) паузами. инициированными лимитами твиттера (во время rescue
аппликуха sleep
).
Буду благодарен за адекватные в этом контексте советы. Правильно ли понимаю, что вопрос априори имеет смысл только в контексте использования sideqik
, resque
, иного менеджера очередей? Что посоветуете? ткните оптимальный, на ваш взгляд, way. Delayed_job
уже не используют, проект умер? Хотелось бы иметь еще и индикацию состояния процесса в кабинете пользователя, присматриваюсь к workling… или же что-то иное? Any ideas, please.