Erlang の関数を繰り返し実行するジョブ・スケジューラらしきものを作ってみた

udp_server に次ぐ、erlang による kademlia 実装の副産物その2。
定期的に関数を実行したかっただけなんですが、ファイル数が増えたので別プロジェクトにしてみました。
ジョブは起動時に supervisor 配下に置かれるので、落ちても再起動されます。
また、ジョブの状態を管理しているプロセスが、ジョブ本体と分離しているので、ジョブ実行中であっても状態の変更を受け付けます。(反映は、実行後だけど)

使い方

ここの download か、下記のコマンドで Source を取得。

git clone git://github.com/cooldaemon/erljob.git

ダウンロードしたディレクトリで make コマンドを使ってコンパイルを行う。

$ cd /path/to/erljob
$ make

後は、下記のような感じで使えます。

$ erl -pa /path/to/erljob/ebin
1> erljob:start().
2> erljob:add_job(hi, fun (_State) -> io:fwrite("Hi!"), ok end, ok, 1000, 2).
3> erljob:stop().