Supervisor でプログラムをデーモン化
k8s を使っていない systemd も入っていない。 そんな古い環境でプロセスをデーモンとして常駐させたくなる時がある。 そんな時はPython製のSupervisordを突っ込むのが便利だと思っている。 類似ツールで有名なのにdaemontoolsもあるけど、あれよりも扱いが楽だし開発が継続している。
3系を初めて触ったら読み込み対象の設定ファイルが /etc/supervisor/conf.d/*.conf に変わっていた。 ログローテーションを含めて下のように設定する。
numprocs > 1 で利用する場合はprocess_name に %(process_num) に相当する文字列が入っていないといけない。 簡単だけど、失敗時のログとか綺麗に出してくれないので command を cat にしたり which python にしたりしながら進めないとならなくなったりする。
|
|
インストールは pip でできるけど、 apt-get などシステムのパッケージマネージャを使った方が Supervisord 自体のサービス化がされているので楽。