【问题标题】:Apache/Passenger rufus cron job not workingApache/Passenger rufus cron 作业不工作
【发布时间】:2012-06-24 02:32:06
【问题描述】:

我有一个在 Apache/Passenger 上运行的 Rails 应用程序。我有一个在后台运行并通过电子邮件发送通知的 rufus cron 作业。当我在 WEBrick 服务器上运行开发中的应用程序时,电子邮件会像应该发送的那样发送。当我在 Apache/Passenger 上启动生产中的应用程序时,电子邮件不会发送。做这项工作的类在 config/initializers/task_scheduler.rb

require 'rubygems'
require 'rufus/scheduler'

Rails.logger.info "Starting the scheduler"

## to start scheduler
scheduler = Rufus::Scheduler.start_new


## Every day at 6 AM, send email for projects that haven't been updated in 14 days
Rails.logger.info "Adding the Stale Email job to the scheduler"
scheduler.cron("* * * * *") do
  Rails.logger.info "Running every minute"
  projects = Project.stale
  projects.each do |project|
    Rails.logger.info "Inside the loop"
    days = (Time.now - project.updated_at).to_i / 1.day
    ProjectMailer.stale(Jetway::Application.config.stale_email, project, days).deliver
    Rails.logger.info "Sent stale email for project #{project.name}; it's #{days} days stale."
  end
end

现在它每分钟都在运行,所以我可以调试。这是我的日志文件输出。

Started GET "/assets/availity_spinner.gif" for 99.44.242.76 at 2012-06-23 21:46:28 -0400
Served asset /availity_spinner.gif - 304 Not Modified (0ms)
Starting the scheduler
Adding the Stale Email job to the scheduler

您可以看到日志语句以及我们对代码的了解程度。我在博客中读到,Passenger 会杀死线程,特别是围绕 cron 作业。我被困住了,试图找到一个方向来解决这个问题。请指出我正确的方向。

【问题讨论】:

    标签: ruby-on-rails-3 cron passenger rufus-scheduler


    【解决方案1】:

    将下面几行添加到您的 apache2 配置中并重新启动您的 apache2 服务器

    RailsAppSpawnerIdleTime 0
    PassengerMinInstances 1
    

    【讨论】:

      猜你喜欢
      • 2014-03-18
      • 1970-01-01
      • 2014-11-22
      • 2012-02-18
      • 2018-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多