0

私の初期化子/ task_scheduler.rb

require 'rubygems'
require 'rufus/scheduler'

scheduler = Rufus::Scheduler.start_new

scheduler.cron '*/5 * * * *' do
  Project.cron_for_report
end

私の問題は、5 分ごとに 12 通のレポート メールを受信して​​いることです。5 分ごとに 1 通のメールしか受信しないはずです。ミューテックスのようなものを使用する必要がありますか?? いくつかのサンプルコードを教えてください。

助けてください。

前もって感謝します。

4

1 に答える 1

1

rufus-scheduler の問題ではないように聞こえますが、12 の Rails プロセスを実行しているように聞こえますが、Rails を実行しているもの (Unicorn、Passenger、... ?) はわかりません。

Ubuntu で実行しているので、crond を自由に使用できます。https://github.com/javan/wheneverをご覧ください。これにより、Rails アプリケーションから crond の強みを活用できます。

Rufus-scheduler は楽しいですが、単純に Rails が起動するたびに起動すると、Rails プロセスごとに rufus-scheduler インスタンスが作成されることになります。等)。そして、あなたのロジックは、新しい、必要な、スケジューラーなどの開始を妨げるデッドスケジューラーを指すロックを回避するのに十分スマートでなければなりません.

Linode/Ubuntu にデプロイするので、いつでもなどの他の選択肢を自由に検討できます。

申し訳ありませんが、サンプル コードはありません。コピペのプログラマーになってほしくありません。

于 2013-06-14T22:31:39.070 に答える