rufus-scheduler looks good

ruby
この記事は約2分で読めます。

rufus-scheduler,ジョブのスケジューリングをシンプルに行える。
類似のところでwheneverというgemがあるが,そちらではcronで実行するジョブをわかりやすいrubyシンタックスで記述できcronに反映させるが,rufus-schedulerはシンプルなスレッドとして実装されている。cronというメソッドもあるが,cronには影響しない。

シンプルなスレッドの実装であり,プロセスが終了するとschedulerも終了するので,バックグラウンドで動かすにはデーモン化する。試しにこんな感じで書いてみる。

実行すると以下のようになる。

lockfileの中身。

バックグラウンドで実行。

in, atは,非repeatableなジョブ。repeatableなジョブは,everyやinterval,cronになる。
everyとintervalの違いは,everyはジョブの開始時間を起点にスケジュールし,intervalはジョブ終了時間から次の開始時間までの間隔でスケジュールする(jobs.rbより)。

mutexを使って関連するジョブの制御もできる。

実行すると以下。

他にも,色々とオプションがある(以下のREADMEを参照)

参考:jmettraux/rufus-scheduler · GitHub

  • 追記 2015-7-25

rakeと合わせると使いやすいかもしれない。

コメント

タイトルとURLをコピーしました