revelのJobs #golangjp
jobsを使ってみる
http://robfig.github.io/revel/manual/jobs.html
jobはModulesの一種。 revelフレームワークに機能を追加したりするよ。
設定
app/conf/app.confに以下を追加
module.jobs = github.com/robfig/revel/modules/jobs
job監視をするページを見たい場合はapp/conf/routesに以下を記述
module:jobs
使い方
ひとまずinit.goに定期実行するfuncを記述。
以下のコードは一分毎に「1minute」と出力するサンプル。
func init() { revel.OnAppStart(func() { fmt.Println("onAppStart") jobs.Schedule("0 * * * * *", jobs.Func(func() { fmt.Println("1minute") })) }) }
例1:functionを指定する。
revel.OnAppStart(func() {})でサーバ起動前にfunc実行
jobs.Schedule("0 * * * * *", jobs.Func(func() { fmt.Println("1minute") }))
時間の設定はcronと同様。
例2:Run() {}を実装した構造体を指定する。
src/github.com/robfig/revel/samples/booking/app/jobs/count.go
を見るとわかりやすい。init*1にOnAppStartを実行してstructを登録している。
登録するstructはrun()を実装している。
*1:main.goにてimportされるのでinitも動く仕組み。