rufus scheduler 未 运行 投入生产

rufus scheduler not running in production

我在 nginx 和 passenger 下有一个 rails 服务器 运行。我的 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 开始。不知道哪里出了问题

谢谢。

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

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

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

或者,您可以使用 'direct' 生成方法。它的效率较低,但它避免了这样的兼容性问题。

所以,我找到了答案here

我在 nginx.conf 中添加了这两行(在 passenger_enabled on; 之后):

    rails_app_spawner_idle_time 0;
    passenger_min_instances 1;

保持一个乘客线程处于活动状态。