Supervisor
it is not meant to be run as a substitute for init as “process id 1”. daemon だけど、実質的に、
to control processes related to a project or a custome to start like any other program at boot time.
を目的とする。
environment
environment=KEY=VALUE とかけるけど、VALUEの中に % や %f みたいなものをいれると、Pythonの文字列形式の方で解釈するので、おかしくなる。
'supervisord.environment' is badly formatted: float argument required, not dict
こんなエラーをもらった。
exited too quickly
You are starting it with -d. Programs run under Supervisor must not daemonize. This is explained in Nondaemonizing of Subprocesses. Run it in the foreground instead.
だそうだ。 supervisorの方でやるので、ということ?
offtopic:
systemdは、さらに抽象化をして、serviceの優先順位や依存関係を整理して、unitという上位階層?を考えてる How:
$ supervisord
$ supervisorctl
supervisord
--help を使えば、optionが出る。-n でnondaemon, foregroundで動かす。debug用かな。
centosではinitファイルを書く。systemdが使える場合はそっち。 supervisorctl
replで、個別の programの状態管理(state, start, stopなど)ができる。あと、reload(reread, update)も。 $ start {name}
みたいな形だけど、nameの指定方法で躓いた。configファイルで process_nameを指定してる場合は、
start {name}:"process_name" みたいな指定になる。
groupingを使った一括指定もできる。 allはもともとある。
config
$ echo_supervisord_conf > /etc/supervisord.conf
でsample設定が吐き出されるので、/etc/supervisord.conf に出して、適宜修正する
startretries: default 3second
startretries=5 5秒くらいretry間隔を開ける
詳細な日本語の説明