Как стать автором
Обновить

loop_dance — фоновый планировщик быстрого развертывания

Время на прочтение 2 мин
Количество просмотров 1.4K
В последнее время в проектах часто приходится создавать демона, который периодически фоном что-то проверяет или отсылает.

Обычно подобную задачу решают с помощью таких пакетов как whevenever, daemon_controller, daemon_generator и т.д. и все казалось бы просто и понятно, но надоело каждый раз городить огород и писать одно и тоже. Мне нужно всего-лишь чтобы раз в час выполнялось какое-нибудь User.notify_all

Презентую loop_dance — gem для быстрого развертывания управляемого демона в рельсовом окружении.

Условия


  1. Минимум лишнего кода. Только то, что нужно запустить и с какой периодичностью.
  2. Код выполняется в рельсовском окружении.
  3. Демон должен автоматически запускаться/перезапускаться при деплоинге проекта.
  4. Возможность управлять демоном через rake-задачи или прямо из приложения (приятно видеть на админке его статус)

Танцуем


Вставляем пакет в наш Gemfile, незабываем затем обновить bundle

gem "loop_dance"


Создаем файлик lib/loop_dance.rb с заданиями и указанной периодичностью.

Например: Каждые 3 часа оповещать всех пользователей. Каждые 60 секунд проверять рапорты.

 class Dancer1 < LoopDance::Dancer

   every 3.hours do
      User.notify_all
   end

   every 60.seconds do
      Report.checks
   end

 end


Вот и все.

Мы создали первого танцора, который запустится автоматически при следующем рестарте рельсовского сервера, будет висеть в системе независимым демоном и с указанной периодичностью выполнять задания.

Можно им управлять и вручную:

rake loop_dance:start_all
rake loop_dance:stop_all
rake loop_dance:status

rake loop_dance:dancer1:start
rake loop_dance:dancer1:stop
rake loop_dance:dancer1:status


А можно и из самого приложения:

Dancer1.start  unless  Dancer1.running?


Адрес проекта: github.com/dapi/loop_dance

Ссылки по теме:
ruby-toolbox.com/categories/daemon_management.html
ruby-toolbox.com/categories/daemonizing.html
ruby-toolbox.com/categories/scheduling.html
Теги:
Хабы:
+30
Комментарии 21
Комментарии Комментарии 21

Публикации

Истории

Работа

Ruby on Rails
12 вакансий

Ближайшие события

PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн
Weekend Offer в AliExpress
Дата 20 – 21 апреля
Время 10:00 – 20:00
Место
Онлайн