Руфус-планировщик запускается только один раз на производстве - PullRequest
2 голосов
/ 14 сентября 2011

Я использую rufus-scheduler для ежедневного запуска процесса с сервера rails. В целях тестирования, скажем, каждые 5 минут. Мой код выглядит так:

в config / initializers / task_scheduler.rb

scheduler = Rufus::Scheduler::PlainScheduler.start_new
scheduler.every "10m", :first_in => '30s' do
 # Do stuff
end

Я также пробовал формат cron:

scheduler.cron '50 * * * *' do
 # stuff
end

например, чтобы процесс запускался каждый час через 50 минут после часа.

Неистовая часть в том, что она работает на моей локальной машине. Процесс будет проходить регулярно и просто работать. Только в моем приложении, развернутом в рабочей среде, этот процесс будет запускаться один раз, а не повторяться.

ps faux показывает, что cron работает, пассажир обрабатывает ускорение процесса рельсов, сайт снова пингуется, поэтому он знает, что он должен обновиться, и производство показывает изменения в коде. Единственное, что отличается тем, что запланированное задание без предупреждения или ошибки не повторяется.

Помощь!

Ответы [ 3 ]

3 голосов
/ 01 февраля 2013

Добавьте следующие строки в конфигурацию apache2 /etc/apache2/apach2.conf и перезапустите сервер apache

 RailsAppSpawnerIdleTime 0
 PassengerMinInstances 1
3 голосов
/ 14 сентября 2011

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

Моя теория о том, что происходит:

Пассажир запускает процесс сервера ruby ​​и использует его для отключения других серверов для обработки запросов. Но поскольку rufus-scheduler запускает свои задания в отдельном потоке от основного потока, поток rufus активен только в исходном процессе ruby ​​(форк ruby ​​только дублирует поток, выполняющий разветвление). Это может показаться хорошим решением, поскольку не позволяет запускать несколько планировщиков, но ... Пассажир может при определенных условиях уничтожать процессы ruby ​​- и если он убивает оригинал, поток планировщика исчезает.

2 голосов
/ 15 сентября 2011

Кельвин прав.

Пассажир убивает ненужные темы.

http://groups.google.com/group/rufus-ruby/search?group=rufus-ruby&q=passenger

...