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

最佳答案

很可能,此问题是由于在phusion passenger生成子进程作为智能生成方法的一部分后,rufus调度程序后台线程被终止引起的。
阅读Spawning methods explained
你的具体问题可能是Smart spawning caveat #2: the need to revive threads
您需要使用文档中的机制恢复rufus调度程序线程。我不确定你需要调用哪个api,所以也许你可以问问rufus调度器的作者。
或者,可以使用“直接”生成方法。虽然效率较低,但它避免了这样的兼容性问题。

10-06 01:34