我在我的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:00scheduler在其他文件中定义:
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中有一台服务器,它似乎已经关闭,计划的任务也没有运行。
问题是,在我的开发环境中,我测试了一个在一分钟内运行的任务,它工作了。这是在服务器中而不是在控制台中。在console中,正如我所提到的,它正在失败。
开发环境
ruby 1.9.3p327 (37606-11-10修订版) x86_64-darwin12.0.0
瘦1.5.0
远程环境
ruby 1.9.3p429 (40747-05-15修订版) x86_64-linux
apache2 2.2.22
乘客4.0.5
宝石
rails 3.2.8
rufus-调度器2.0.18
发布于 2013-08-10 05:49:22
这是一个经典的例子:
https://groups.google.com/group/rufus-ruby/search?group=rufus-ruby&q=passenger&pli=1 https://groups.google.com/forum/#!searchin/rufus-ruby/passenger (新的谷歌群组)
(不幸的是,这些讨论中的大多数链接都是死的(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发布于 2013-09-18 07:14:38
我不得不在我的Dashing应用程序(使用rufus- VirtualHost )中使用Apache调度器中的"PassengerSpawnMethod direct" setting来让它正常工作。
https://stackoverflow.com/questions/18108719
复制相似问题