定期的に処理を実行する

http://d.hatena.ne.jp/technohippy/20070807
を参考に、Railsでインストールした。

cronのように定期的にワーカーを立ち上げ、処理させることもできる。

config/backgroundrb_schedules.yml

# ラベル(わかりやすい名前を)
sample_runner:
  # 対象のワーカークラス
  :class: :sample_worker
  :job_key: :sample_runner
  # :cron_trigger だと同じみのcronと同じように指定できる
  # :trigger の場合は、
 # :start(いつから)、:stop(いつまで)、:interval(何秒おきに?)
  # という形式で指定する。
  :trigger_type: :cron_trigger
  # cronと違うのは秒から指定できること。
  # この例では1分おきに0秒の時点で実行。
  :trigger_args: 0 * * * * * *

また、スケジュールで起動するワーカーは、do_work内で明示的にself.deleteを呼ぶ必要があるらしい。

class SampleWorker < BackgrounDRb::Worker::RailsBase

  def do_work(args)
    # 処理
    self.delete
  end  

end
SampleWorker.register

あとは、

script/backgroundrb start

で、定期的に目的のワーカーを起動する。

log/backgroundrb_server.logを観察すると

20071128-11:48:02 (5685) Starting worker: sample_worker sample_runner (sample_worker_sample_runner) ()

のようなログが流れていく。

追記

ネットワークごしに非同期処理を行いたくて、プロトコルを'druby'にして設定すると、うまくうごかない感じ。
具体的には、サーバを起動しても、アクセスすると落ちる。
nmapでスキャンしても。
なんかおかしな事してるのかなぁ・・・

ちなみに、BackgrounDRbはこの0.2.1で、また作りなおししてるみたいで、今のtrunkはまた全然違う感じになってます。