Supervisor で touch-reload する Eventlistener

つくった。

作った動機とか用途とか

Wercker で CI しつつデプロイする先がさくら VPS 上の FreeBSD jail という構成のアプリを デプロイのたびに再起動する方法を考えていて、uWSGI の touch-reload オプションみたいなのがあればできそうだなーと思いあたってそのまま実装した。

使いかた

動作環境やら事前準備やら

設定

Supervisor の conf ファイルに下記を記載して $ supervisorctl reload する。トリガーファイルを touch すると指定した program が再起動するはず。

今回は jail 内の Supervisor を調整したいのでこんな /usr/jails/{container}/home/{user}/{program}.reload 感じのパスを touch すると無事再起動された。あとは SSH しつつ叩くだけ。

[eventlistener:touch_reload]
command={Python 2.7} {touch_reload_event_listener.py のパス} -p {Supervisor 上の program_name} -f {トリガーファイルのパス}
events=PROCESS_STATE

参考にしたもの

superlancememmon.py を全力で参考にした。