2013-08-07 3 views
1

Я делаю это в моей консоли Rails:Debugging Руфус планировщик

job = scheduler.at 1.minute.from_now do Service.log.debug 'scheduler works' end 
job.schedule_info 
=> Wed, 07 Aug 2013 16:14:46 UTC 00:00 

scheduler определен в другом файле:

require 'rubygems' 
require 'rufus/scheduler' 

def scheduler 
    @scheduler ||= Rufus::Scheduler.start_new 
end 

И когда я бегу в консоли:

Service.log.debug 'scheduler works' 

Файл журнала службы написан.

Проблема

scheduler.at 1.minute.from_now do Service.log.debug 'scheduler works' end 

Не записывает в журнал после минуты. Что мне не хватает? Как я могу отладить это?

Реальная проблема

У меня есть сервер в EC2, который кажется является завершение работы и запланированные задачи не выполняются.

Дело в том, что в моей среде разработки я тестирую задачу, выполняемую за одну минуту, и она работает. Это на сервере не в консоли. В консоли, как я уже упоминал, не удается.

Дев среда

рубинового 1.9.3p327 (2012-11-10 редакция 37606) [x86_64-darwin12.0.0]

Тонкий 1.5.0

Удаленная среда

рубинового 1.9 .3p429 (2013-05-15 редакция 40747) [x86_64-Linux]

apache2 2.2.22

пассажирских 4.0.5

Gems

рельсы 3.2.8

Руфус-планировщик 2.0.18

+0

Чем отличается среда разработки в среде EC2. На каком сервере вы запускаете Rails (в dev и в EC2)? Вы уверены, что процесс, содержащий планировщик, не завершается (и запросы обрабатываются разветвленными процессами? – jmettraux

+0

Я думаю, что может быть сбой в журнале, то, что происходит со мной сейчас, - это выполнить кусок кода, который я могу отчетливо видеть, но у меня есть не знаю, какой код. Как я могу узнать, что процесс планировщика не заканчивается? – juanpastas

+0

Если это проблема с промывкой журналов, посмотрите http://stackoverflow.com/questions/2210561/rufus-scheduler-not-logging-in-production ? rq = 1 – jmettraux

ответ

2

Это классический:

https://groups.google.com/group/rufus-ruby/search?group=rufus-ruby&q=passenger&pli=1 https://groups.google.com/forum/#!searchin/rufus-ruby/passenger (новые группы Google)

(к сожалению, большинство ссылок в этих обсуждениях dead (4 года назад ...))

Вам нужно будет проверить конфигурацию вашего пассажира, чтобы увидеть, как он себя ведет. Вы должны убедиться, что процесс, в котором запущен поток rufus-scheduler, как-то сохраняется.

Найдите время, чтобы прочитать конфигурацию/руководство пассажира и его экспериментальную настройку.

Я смутно помню, что те могут помочь:

http://www.modrails.com/documentation/Users%20guide%20Apache.html#PassengerPoolIdleTime http://www.modrails.com/documentation/Users%20guide%20Apache.html#PassengerMinInstances

ответ Ajet в Rufus Scheduler not running интересно, он выступает:

RailsAppSpawnerIdleTime 0 
PassengerMinInstances 1 
+0

У меня это в apache conf: '# Не перезапускать приложение и не создатель PassengerPoolIdleTime 0 PassengerMaxPreloaderIdleTime 0' в любом случае, я прочитаю. Просто сообщение, в случае полезно – juanpastas

+0

Первая ссылка имеет цикл перенаправления для меня – juanpastas

+0

Работает отлично для меня, вот более современная версия: https://groups.google.com/forum/#!searchin/rufus- рубин/пассажира – jmettraux

2

Я должен был использовать "PassengerSpawnMethod direct" setting в моем Apache VirtualHost для моего лишающего приложения (которое использует rufus-scheduler), чтобы заставить его работать правильно.