0

Rails アプリを Apache/Passenger で実行しています。バックグラウンドで実行され、電子メールで通知を送信する 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 ジョブの周りでスレッドを強制終了することをブログで読みました。私は立ち往生しており、この問題を解決するための方向性を見つけようとしています。私を正しい方向に向けてください。

4

1 に答える 1

2

以下の行をapache2構成に追加し、apache2サーバーを再起動します

RailsAppSpawnerIdleTime 0
PassengerMinInstances 1
于 2013-02-01T11:10:25.937 に答える