调试Rufus调度程序
我在我的Rails控制台中这样做:
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中有一台服务器似乎已关闭,并且未运行计划任务。
事实是,在我的开发环境中,我测试了一分钟内运行的任务,它可以工作。 这是在服务器而不是在控制台中。 在控制台中,正如我所提到的那样失败。
开发环境
ruby 1.9.3p327(2012-11-10修订版37606)[x86_64-darwin12.0.0]
瘦1.5.0
远程环境
ruby 1.9.3p429(2013-05-15修订版40747)[x86_64-linux]
apache2 2.2.22
乘客4.0.5
gem
rails 3.2.8
rufus-scheduler 2.0.18
那是经典之作:
https://groups.google.com/group/rufus-ruby/search?group=rufus-ruby&q=passenger&pli=1 https://groups.google.com/forum/#!searchin/rufus-ruby/passenger(new谷歌组)
(不幸的是,这些讨论中的大多数链接已经死亡(4年前……))
您必须检查Passenger配置以查看其行为方式。 您必须确保以某种方式保留启动rufus-scheduler线程的进程。
花点时间阅读Passenger配置/手册并进行实验调整。
我依稀记得那些可以帮助:
http://www.modrails.com/documentation/Users%20guide%20Apache.html#PassengerPoolIdleTime http://www.modrails.com/documentation/Users%20guide%20Apache.html#PassengerMinInstances
他提倡Ajet在Rufus Scheduler中没有运行的答案很有趣,他提倡:
RailsAppSpawnerIdleTime 0 PassengerMinInstances 1
我不得不在Apache VirtualHost中为我的Dashing应用程序(使用rufus-scheduler)使用“PassengerSpawnMethod direct”设置来使其正常工作。