Tarekさんが面白いものを作ってるみたいなので、動かしてみる。
http://pypi.python.org/pypi/circus/
http://pypi.python.org/pypi/chaussette/
試した環境はUbuntu12.04でPython2.7.3。
ライブラリのバージョンは以下の通り。
chaussette==0.4 circus==0.5.1 meinheld==0.4.15
インストール
circusはZeroMQに依存しているので、予めaptでインストールしておく。
$ sudo aptitude install libzmq-dev
mkvirtualenvでvirtualenv環境を作って、circusをpipでインストール。
$ pip install circus
これで依存モジュールもインストールできた。
chaussetteとmeinheldは特に依存はないので、そのままインストール。
$ pip install chaussette meinheld
動かしてみる
設定ファイルとアプリケーションを同じディレクトリに作成する。
hello.ini
circus用の設定ファイルを用意。
cmdではvirtualenv内のchaussetteコマンドを直接指定している。
[circus] check_delay = 5 endpoint = tcp://127.0.0.1:5555 [watcher:hello] cmd = /home/tokibito/.virtualenvs/circus-hello/bin/chaussette --fd $(circus.sockets.web) --backend meinheld server.app use_sockets = True numprocesses = 5 [socket:web] host = 0.0.0.0 port = 8000
chaussetteのドキュメントにはfdの指定が${sockets.web}のようになっていたが、バージョンが上がると記述方法が変わるっぽい?
server.py
簡単なwsgiアプリケーションを用意。
def app(environ, start_response): start_response("200 OK", [('Content-Type', 'text/plain')]) return "Hello, world!\n"
実行
作成した設定ファイルを指定してcircusdを起動
$ circusd hello.ini
curlで叩いてみる。
$ curl http://127.0.0.1:8000/ Hello, world!
管理はcircusctlコマンドで行なう。endpointで指定したアドレスとポートが使われる。
$ circusctl stats hello: 7492: 7492 python tokibito 0 13M 48M 0.0 1.4 0:00.73 7493: 7493 python tokibito 0 13M 48M 0.0 1.4 0:00.47 7490: 7490 python tokibito 0 13M 48M 0.0 1.4 0:00.95 7491: 7491 python tokibito 0 13M 48M 0.0 1.4 0:00.87 7489: 7489 python tokibito 0 13M 48M 0.0 1.4 0:00.96
なかなか良さそう。