Rails - Passenger和Nginx阻止rufus-scheduler在生产模式下进行调度

时间:2015-01-07 14:02:44

标签: ruby-on-rails nginx passenger rufus-scheduler

我使用Rufus Scheduler每2分钟调用一次函数。

在使用WEBrick运行rufus调度程序的开发模式下,系统按预期工作,每隔2分钟调用一次函数。

当我部署到运行乘客和NGINX的生产服务器时,调度程序不再调用该函数。

我假设这与线程有关,调度程序运行在可能在我们的生产服务器上销毁的单独线程上。

在使用Passenger和Apache时,我已经看到了类似问题的答案,但我无法提出在生产模式下使用乘客和NGINX运行rufus调度程序的解决方案。

任何帮助都将不胜感激。

以下代码设置rufus

# :nocov:
require 'rufus-scheduler'
include TwitterParser
unless ENV['NODAEMON'] || Rails.env != 'production'
  scheduler = Rufus::Scheduler.new
  TwitterParser.set_up

  scheduler.every '2m' do
    begin
      TwitterParser.parse_tweets
    rescue Twitter::Error::TooManyRequests => error
      puts 'Too Many Twitter requests, resets in: ' + error.rate_limit.reset_in.to_s
    end
  end
end
# :nocov:

1 个答案:

答案 0 :(得分:0)

请阅读rufus-scheduler常见问题解答。

https://github.com/jmettraux/rufus-scheduler#faq

它包含有关Passenger + rufus-scheduler

的(旧)文章的链接

Amog他们,乘客的一位作者的回答可能有所帮助:

rufus cron job not working in Apache/Passenger

玩得开心。