2011-03-15 6 views
0

rakeタスクの開始から終了までの間隔を2分にする方法はありますか?例えばcronを使ってrakeタスクを実行するには、それぞれの実行の間に時間ギャップがありますか?

1:00 PM: Run a rake task 
     Task will usually take 30 seconds to complete, but could take 5 minutes. 
     The task took 3 minutes to complete in this first run. 
1:02 PM: cron has been scheduled to run task every 2 minutes but the previous 
     task has not completed yet, so cron should not run this task right now 
1:03 PM: task has completed 
     cron should wait 2 minutes 
1:05 PM cron should re-run the task 

答えて

1

delayed_jobsまたはresque-schedulerの宝石を見てみましょう。

0

が、私はそれの終わりに自分自身を再スケジュールタスクの終了をさせることを提案を実行しています。

EDIT

のcronと私の(限られた)経験は10年以上前から茎けど、私はあなたが、それはまだ実行している場合はcronジョブを再起動しないで作ることができると仮定? "x分ごとにスケジューリングを保つことができますが、まだ実行されていない場合は"スケジューリングを保持できますが、最後にタスクは "y分後"にリセットされます。

その後、タスクが起こってもスケジュールを変更できない場合、cronの通常の機能ではすぐに「すぐに」再起動されます。

+0

レーキタスクにエラーがある場合、その「再スケジュール」コードは実行されないことがありますか? – Zabba

+0

レーキタスクのエラーからレスキューすることができます。スケジュールを変更するには、 'at'コマンドを使用します。 – taro

1

cron-tabの代わりに、レーキタスクを実行するための無限ループ(ルビープログラム)を使用できます。 タスクが完了したら、sleepメソッドを使用して2分間停止してください。 エラーが発生した場合に、再度rakeタスクを実行するレスキューブロックがあります。

関連する問題