7

ResqueRedisを使用してバックグラウンドジョブを処理しています。バックグラウンドタスクを実行するために、メソッドResque.enqueue(MyModel)を1時間に1回だけ呼び出したいと思います。

例:10,000人のユーザーがいるサイトがあるとします。このメソッドを1日24回だけ呼び出したいと思います。10,000*24ではありません。メソッドの例は次のとおりです。

Resque.enqueue(MyModel)

よろしくお願いします。また、Delayed Jobに移行するのではなく、Resqueに固執することを好みます。ありがとうございました。

4

3 に答える 3

7

この種のタスクにはcronジョブを使用する必要があります。

いつでも宝石を使用することをお勧めします。

ここでrailscastを参照してください:http://railscasts.com/episodes/164-cron-in-ruby

于 2011-05-22T23:05:20.917 に答える
3

すでにResqueを使用しているので、利用可能な多くのResqueプラグインの1つであるresque-schedulerを使用することをお勧めします。ResqueUIにも非常にうまくプラグインします。READMEで説明されている簡単なセットアップ。また、不足している多くのDelayedJobのもの(実行の遅延)を追加します。

に切り替えたwhenever理由resque-scheduler

  • app-folderにとどまり、cronファイルを台無しにしません。
  • すべての「cron」を停止するには、Resqueワーカーを無効にするだけです。
  • 例外はResqueUIに記録されます。
  • ResqueUIを介した手動による再スケジュールが可能です。
  • 組み合わせてresque-loner、ジョブが2つの実行間のスパンより長くかかる場合に、二重実行を防止します。
  • それでもResqueの優先システムに従います。
  • Resqueのワーカープールを使用するため、追加の起動時間はありません(アプリが大きくなると、最大60秒かかる可能性があります)。
  • 使用される「技術」が1つ少なくなります。
  • 単純な切り替え:構成はcronのような方法で行われます。
于 2011-05-22T23:12:34.110 に答える
0

あなたは簡単に使うことができますあなたが尋ねたことを正確に行うときはいつでも、そしてもっとたくさん、それはかなり良いドキュメントを持っています。

次のような構文を使用できます。

every 3.hours do
    runner "MyModel.some_process"
    rake "my:rake:task"
    command "/usr/bin/my_great_command"
end

以下を使用してインストールします。

$ gem install whenever

または、GemFileに追加します。

gem 'whenever', :require => false

次に実行します:

$ cd /apps/my-great-project
$ wheneverize .

これがお役に立てば幸いです。

于 2015-08-24T09:13:41.270 に答える