2016-08-06 9 views
2

単純な電子メール通知の場合、バックグラウンドタスクをRails 5DelayedJobに設定しています。生産ログの遅延ジョブデバッグ

私の生産のログを見ると、それは、以下の項目を考え出すています:

[2016-08-05T20:22:15.094172 #10616] DEBUG -- : 
Delayed::Backend::ActiveRecord::Job Load (1.0ms) UPDATE "delayed_jobs" 
SET locked_at = '2016-08-06 10:22:15.092656', locked_by = 'delayed_job 
host:jiably pid:10616' WHERE id IN (SELECT "delayed_jobs"."id" FROM 
"delayed_jobs" WHERE ((run_at <= '2016-08-06 10:22:15.091986' AND 
(locked_at IS NULL OR locked_at < '2016-08-06 06:22:15.092073') OR 
locked_by = 'delayed_job host:vps-server-name pid:10616') AND failed_at IS NULL) ORDER BY priority ASC, run_at ASC LIMIT 1 FOR UPDATE) RETURNING * 

は、キューにジョブがないと私は私のアプリのメール通知をテストするときの仕事はうまく処理されているようです。

これは正常ですか?頻繁に繰り返してログファイルに追加しているようです。私はlogrotateの設定をしていますが、それが原因かどうかわからない設定かどうかは不明です。

ありがとうございました。

答えて

0

Delayed :: Job issue 477 hereが表示されている場合があります。編集:これは生産で発生したと述べたことを理解します。修正プログラムまたは構成は、その懸案事項に一致するように変更する必要があります。

もしそうなら、修正がそこにあります。 config/initializers/delayed_job_config.rbをここに実装しました(ステージングが実装されていることに注意してください):

Delayed::Worker.max_attempts = 5 
Delayed::Worker.delay_jobs = !Rails.env.test? 
Delayed::Worker.sleep_delay = 10 
Delayed::Worker.default_priority = 100 

# Prevent excessive logging every 5 seconds when Logger level < WARN 
# https://github.com/collectiveidea/delayed_job/issues/477 
if %w(development staging).include? Rails.env 
    module Delayed 
    module Backend 
     module ActiveRecord 
     class Job 
      class << self 
      alias_method :reserve_original, :reserve 
      def reserve(worker, max_run_time = Worker.max_run_time) 
       previous_level = ::ActiveRecord::Base.logger.level 
       ::ActiveRecord::Base.logger.level = Logger::WARN if previous_level < Logger::WARN 
       value = reserve_original(worker, max_run_time) 
       ::ActiveRecord::Base.logger.level = previous_level 
       value 
      end 
      end 
     end 
     end 
    end 
    end 
end 
+0

このスレッドは安全ですか?私はAcitveRecord :: Base.loggerが共有されていることを理解しています。ARクラスの他のすべてのインスタンスは – Ruslan

+0

@Ruslanです。特に、参照されている問題で言及されているので、確かに正しいですね。私はそれを述べたはずです。私は今、深い分析をする時間がありません。あなたはどんなインパクトを期待しますか? –

+0

私は自分で分析をしていません。しかし、私は、 'AR'が(スイッチの外で)クエリを実行すると(スイッチの外で)それがログに記録されないと仮定しています。タイミングはかなり正確でなければなりません – Ruslan