2017-05-29 14 views
-2

質問があります。バックグラウンドで実行されているcronjobを使用して、ロードバランサと2つのWebアプリケーションのインスタンスがあります。 cronjobが2つのインスタンスの間で1回だけ実行されることをRailsで確認するにはどうすればよいですか?Cronが複数回実行されないようにするRails Loadbalancer

答えて

0

両方のアプリケーションサーバーでcronを使用する必要がありますか?なぜ、1つのワーカーサーバーしか持たないのですか?

ジョブが実行されるサーバーを1つだけ持つことはできない場合は、ジョブが実行されたかどうかを示す値をデータベースに保存して、ジョブを実行する前にその値を確認することができます。 :

class BackgroundJob 
    def perform 
    return if performed_today? 
    JobRun.create!(performed_on: Date.today) 
    # Perform the job here 
    end 

    private 

    def performed_today? 
    JobRun.where(performed_on: Date.today).exists? 
    end 
end 
+0

マヌエルの提案に感謝します。私は1つのワーカーサーバーを持っているという方向に向かって学習していましたが、両方のサーバーを同じに保つために、提案したような優れたソリューションが必要でした。 – wongkoty

関連する問題