rufus调度程序未在生产中运行

时间:2015-01-16 08:41:01

标签: ruby-on-rails linux scheduled-tasks passenger

我有一个在nginx&乘客。我的sheduler.rb看起来像这样

require 'rufus-scheduler'
my_awesome_job = Rufus::Scheduler.new

my_awesome_job.cron '59 23 * * *' do
    #do something
end

如果我在接下来的2-3分钟内完成工作(测试),一切正常。但是这个,正如我在制作中所需要的那样,并不是每天23:59开始。我不知道问题出在哪里。

感谢。

2 个答案:

答案 0 :(得分:0)

最有可能的是,这个问题是由于在Phusion Passenger生成子进程作为智能生成方法的一部分后Rufus调度程序后台线程被终止。

阅读Spawning methods explained。 您遇到的具体问题可能是Smart spawning caveat #2: the need to revive threads

您需要使用文档中的机制恢复Rufus调度程序线程。我不确定您需要进行哪个API调用,所以也许您可以询问Rufus调度程序作者。

或者,您可以使用“直接”产卵方法。它的效率较低,但它避免了这样的兼容性问题。

答案 1 :(得分:0)

所以,我找到了答案here

我在nginx.confpassenger_enabled on;之后)添加了这两行:

    rails_app_spawner_idle_time 0;
    passenger_min_instances 1;

这使一个乘客线程保持活动状态。