2012/09/13

Recent entries from same category

  1. Go言語で Lisp 処理系を作った。
  2. Go 言語のスライス挿入ベンチマーク
  3. Go 言語で変数のシャドウイングを避けたいなら shadow を使おう。
  4. Go 言語の struct の実体を引数で(なるべく)渡せない様にするテクニック
  5. Oracle Cloud Function でしりとりした。

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


blog comments powered by Disqus