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().