1

私のアプリケーションでは、5 分ごとにタスクを実行する必要があります。タスク自体は非常に無駄のないものなので、それは問題ではありません。要点は、Rails 環境のロードでサーバーのほぼすべての CPU が使用されることです。現在、私は次wheneverのようなコードで使用していますschedule.rb

every 5.minutes do
  runner Task.perform
end

しかし、コストが大きすぎます。プリロードされた環境でこの種のタスクを実行する方法はありますか? または他のより良い解決策はありますか?

4

2 に答える 2

1

バックグラウンド プロセス (多くの gem、特に遅延した job ) を使用し、次のようなポーリング ループを使用してコードに単純な「cron」を実装することを検討してください。

def perform
  last = Time.now
  while true
    if last.sec % (5 * 60) != 0
      do_task
      last = Time.now
    end
  end
end

警告: この例には、スイス チーズのスライスよりも多くの穴があります。もっと良いものを書いてください:-)

于 2012-11-09T16:42:01.613 に答える
0

cronジョブを使用するか、bashスクリプトで実行するように設定できます。これらには、アプリケーションに縛られないという利点があります。

于 2012-11-09T16:40:49.267 に答える