Rufus 调度程序未在生产环境中运行



我有一个在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 开始的。我不知道问题出在哪里。

谢谢。

所以,我在这里找到了答案

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

    rails_app_spawner_idle_time 0;
    passenger_min_instances 1;

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

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

阅读生成方法说明。您遇到的特定问题可能是智能生成警告#2:需要恢复线程。

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

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

最新更新