1

我在我的 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]

阿帕奇2 2.2.22

乘客 4.0.5

宝石

导轨 3.2.8

rufus 调度程序 2.0.18

4

2 回答 2

2

我必须为我的 Dashing 应用程序(使用 rufus-scheduler)使用 Apache VirtualHost 中的“PassengerSpawnMethod direct”设置才能使其正常工作。

于 2013-09-17T23:14:38.443 回答
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(新谷歌群组)

(不幸的是,这些讨论中的大多数链接都已失效(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-08-09T21:49:21.930 回答