ruby-on-rails
  • delayed-job
  • ruby-on-rails-5
  • 2016-08-06 53 views 2 likes 
    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

    相關問題