私は現在cronと "rails runner"を使ってバックグラウンドジョブを実行しています。ほとんどの場合、これらの仕事は単純な投票です。「リマインダーメールを受信する予定のレコードを検索してください。そのメールを送信してください。cronジョブに「レールランナー」を使用すると、CPU使用量が非常に多くなります。
私はAmazon EC2 Smallインスタンスを見ていて、これらのcronジョブが実行されるたびにCPUが〜99%に上昇することに気付きました。私の現在の仕事の中の小さな小さな質問は、確かにではなく、です。私はスパイクが単に "レールランナー"を介してフルレール環境をロードする努力のためであると推測しています。
定期的にスケジュールされたバッチジョブを処理するCPU効率の良い方法はありますか?
P.S.私は、将来の時刻Xでリマインダ電子メールを送信する特定の例では、delayed_jobsを実行し、将来的にジョブをスケジュールすることができることを知っています。すべての可能なタスクがdelayed_jobsフレームワークにはうまく収まっているわけではないので、私はより伝統的な "cron job"タイプのソリューションを探しています。 "レールランナー"のように、狂ったCPUの影響はありません。
ありがとうございます! ResqueはDelayed Jobsに代わるもののように見えますが、「レールランナー」に代わるものです。たとえば、遅延ジョブの場合と同じように、「一定の間隔でこのジョブを実行する」ではなく、「このジョブを時間Xで1回実行する」という条件を満たしているようです。 – cailinanne
ループ実行とスリープでインターバル実行ジョブを作成することもできます。私はループを使用します。そして、resqueは私に労働者を監視するための "resque-web"を与えます – Falcon
ありがとう!私はちょうど私が必要とするかもしれない "resque - スケジューラ"を見つけました。 https://github.com/bvandenbos/resque-scheduler – cailinanne