require_relative '../../bin/generate_survey'
require_relative '../../bin/generate_stats_emails'
email_config = YAML.load_file("#{Rails.root}/config/email_config.yml")
def rufus_logger
@@rufus_logger ||= Logger.new("#{Rails.root}/log/rufus.log")
end
survey_scheduler = Rufus::Scheduler.new
rufus_logger.info('Initializing Survey Rufus Scheduler')
#Job A
survey_scheduler.cron '00 08 * * 1-5' do
conference_today = read_ics_make_quiz(Date.today)
rufus_logger.info("Survey scheduling for #{Date.today} returns #{conference_today}")
end
#Job B
survey_scheduler.cron '00 23 * * 1-5' do
rufus_logger.info("Stats Emails starting")
survey_settings = Survey.where ['unlock_at BETWEEN ? AND ?', DateTime.now.beginning_of_day, DateTime.now.end_of_day] unless @survey_settings[0]
if survey_settings.present?
get_latest_stats(email_config)
UserMailer.presenter_stats_email(email_config[:action_mailer][:education_email_group]).deliver_now
UserMailer.resident_stats_email(email_config[:action_mailer][:resident_email_group]).deliver_now
rufus_logger.info("Stats Emails sent")
else
rufus_logger.info("Stats Emails not sent")
end
end
详细说明: 服务器:Ubuntu 12.04 阿帕奇/ MySQL的/乘客 Ruby 2.1.5 Rails 4.2.0
每次,工作A运行得非常好。 工作B永远不会执行。它永远不会在日志中留下任何东西。
Rufus.log有: 初始化调查Rufus调度程序 其次是每日行: #{Date.today}的调查安排返回#{conference_today}
它永远不会达到工作B的评论
感谢任何帮助
答案 0 :(得分:1)
您的“拆分为两个文件”移动很有意思,但您最好将其限定为“拆分为两个文件和两个调度程序实例”。我很高兴你能以某种方式工作。
我想知道你的工作是否已经安排在你的第一个“单个文件”版本中。像
这样的东西p survey_scheduler.jobs.length
会告诉我们的。但我认为它会告诉2并且问题出在其他地方,这使我进入了我的“答案”的第二部分。
感谢您通过指定使用Passenger来添加一条非常缺少的信息。
Passenger vs rufus-scheduler是一个经典之作。通常的症状是“它没有安排”或“它不会在一段时间后安排”。我怀疑你是这个变种的受害者。在你非常仔细地报告发生了什么之前,不能告诉你。
我建议您阅读rufus-scheduler README FAQ中的最后一个链接,它们包含有关这些问题的信息(和解决方案)。查看您正在使用的乘客版本的手册将是很好的。了解你的工具。
last link更多的是关于Unicorn,但它暗示了Passenger的解决方案。
答案 1 :(得分:0)
我将它们分成2个文件,现在可以正常工作。
scheduled_jobs.rb
require 'rufus-scheduler'
require_relative '../../bin/generate_survey'
def rufus_logger
@@rufus_logger ||= Logger.new("#{Rails.root}/log/rufus.log")
end
survey_scheduler = Rufus::Scheduler.new
rufus_logger.info('Initializing Survey Rufus Scheduler')
survey_scheduler.cron '00 08 * * 1-5' do
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
conference_today = read_ics_make_quiz(Date.today)
rufus_logger.info("Survey scheduling for #{Date.today} returns #{conference_today}")
end
scheduled_email.rb
require 'rufus-scheduler'
require_relative '../../bin/generate_stats_emails'
email_config = YAML.load_file("#{Rails.root}/config/email_config.yml")
def rufus_logger
@@rufus_logger ||= Logger.new("#{Rails.root}/log/rufus.log")
end
email_scheduler = Rufus::Scheduler.new
rufus_logger.info('Initializing Email Rufus Scheduler')
email_scheduler.cron '00 23 * * 1-5' do
rufus_logger.info("Stats Emails starting")
get_latest_stats(email_config)
UserMailer.presenter_stats_email(email_config[:action_mailer][:education_email_group]).deliver_now
UserMailer.resident_stats_email(email_config[:action_mailer][:resident_email_group]).deliver_now
rufus_logger.info("Stats Emails sent")
end