2011-12-15 18 views
1

私は現在、多くの定期的なジョブを処理する必要があるアプリケーションでは、resqueとresque-schedulerを使用しています。「毎時間これを行う」「毎日これを行う」などです。ジョブ自体でジョブを実行すると、HourlyJobキューに.enqueue_at(1時間.from_now、HourlyJob)などが表示されます。遅延スケジューラキューは遅延ジョブの/ lots /を処理する予定ですか?

これを行う必要がありますか?これは、resque-schedulers cronタイプの機能を使用して静的な定期的な仕事をして、次の5分間の遅れたジョブをスケジュールするようなものだと感じています。しかし、私が本当にやっていることは、高速、redisベース)resque - スケジューラー私の(おそらくあまり実装されていない、mysqlベースの)コード、確かに?

私は今やっていることに何か問題はありますか?

答えて

0

私は個人的にあなたのユースケースは、それがために建てられた、まさにで、resque-スケジューラが提供するcronのスタイルを使用したい:

  • あなたのより直接的にこれらのジョブを繰り返している示しています。
  • すべては、複数のジョブクラス/モジュールではなく、同じYAMLファイル内にあります。実際のジョブ内のジョブの次の実行をキューイングすることで

は:

  • あなたは労働者/仕事/サーバに障害が発生した際に欠落しているつもりは次の実行の危険性があります。
  • 不必要にRedisでより多くのメモリを使用すると、スケジューラプロセスは実行準備ができるまでRedisにジョブを追加しません。

ホップこれは役立ちます。

+0

コメントありがとうございます。 :) 問題は、これらのジョブは静的ではなく、cronスタイルのスケジューラは静的ジョブのためだけであるようです。動的で再帰的なジョブがたくさんあります。新しいジョブがスケジュールされるたびにschdulerを再起動せずにcronlikeジョブファイルを "再ハッシュ"する方法はありますか? –