半分個人メモというかブログの下書き。
python 界隈でアプリケーションのプロセス管理と行ったら supervisord が有名ですが
gunicorn のドキュメントを読んでいたら gaffer という似たようなツールを発見したので fabric と併せて使ってみたテスト。
インストール
$ pip install gaffer
簡単。
Procfile が使える
heroku をいじったことがある人ならピンと来るかと思いますが
Procfile と呼ばれるものをプロジェクト内に置いて、そいつを読ませることで指定した挙動ができます。
gunicorn で動かす場合はこんな感じ
gunicorn: gunicorn main:app -c gunicorn.conf.py
とりあえず使ってみる
とりあえず試したければ $ gaffer start
で同ディレクトリの Procfile を読み込んで内容を実行してくれる。
デーモン化したければ $ gaffer load
を実行することで Procfile をデーモン担当の
gafferd に送ってくれます。
この時、 gafferd がデーモン状態で起動していないと ConnectError が帰ってくるので
OS 起動時に gafferd --daemon が走るようにしておくこと。
(ここで小一時間詰まった)
fabric と連携
連携というかなんというか。
とりあえず以下でデプロイができます。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from fabric.api import local, run, env, cd, hosts
CODE_DIR = "/お前の/ディレクト/リ"
env.user = "ユーザー名"
@hosts('localhost:5959')
def commit():
message = raw_input("Enter a git commit message: ")
local("git add . && git commit -m \" %s \"" % message)
local("git push github master")
@hosts('さーばー')
def deploy():
with cd(CODE_DIR):
run("git pull origin master")
#再読み込み
run("gaffer unload")
run("gaffer load")
いちいち unload しなくていいんじゃないかなーと思いつつこれから検証してみます。