2012/09/13

Recent entries from same category

  1. errors.Join が入った。
  2. unsafe.StringData、unsafe.String、unsafe.SliceData が入った。
  3. Re: Go言語で画像ファイルか確認してみる
  4. net/url に JoinPath が入った。
  5. Go の struct は小さくできる(fieldalignment のススメ)

Webのお仕事をやってると、Webサーバのインスタンスと同時にワーカープロセスを起動する事も結構多く、ジョブキューサーバも含めて一括で起動したくなったりします。
ruby 製の foreman という物を使うと Procfile というファイルに書かれた内容でプロセスを起動して、個別に上げたり落としたり出来る様になります。ただしwindowsでは重くて使えない(windows上のrubyどうにかしてる)し、kazeburoさんが作ってるperl製のProcletはParallel::Preforkがwindowsで動かないので困ってました。 ここまで来たら自分で書くしかないかなーとか考えながら、C言語で書くの面倒臭いと思ったのでGo言語で書きました。
mattn/goreman - GitHub

foreman clone written in go language

https://github.com/mattn/goreman
今のところ以下の様に動きます。
まず以下の様なProcfileを用意します。 web1: plackup --port 5000
web2: plackup --port 5001
このファイルのある場所で、 $ goreman start とすると Procfileにエントリされているプロセスを起動します。
goreman1
この様に色付きで標準出力されながら起動します。
別の端末で $ goreman run stop web1 とすると
goreman2
停止し $ goreman run start web1 とすると
goreman3
再度web1に割り当てられたプロセスが起動します。
$ goreman run restart web1 もあります。rpcの警告が出てるのはそのうち直します。
Windows と Linux で動作します。
今のところ、foreman の様に .env ファイルを読み込んだり、.foreman ファイルに従って起動したりはしていませんが、そのうちやるかもしれません。
機能はまだまだですが、そのうち便利になってく気がします。
Posted at by | Edit