としたにあんの左脳

備忘録です.

supervisordのstartsecs

supervisordのstartsecsって具体的に何なんだということで,以下の設定で設定でsupevisorを使ってプロセスを起動してみる.プロセスの起動時間をいじってみて,実験してみる.

supervisor.d/demo.ini

[program:demo]
command=python /home/vagrant/test.py
process_name=%(program_name)s
numprocs=1                   
autostart=true               
user=vagrant
redirect_stderr=true         
stdout_logfile=/var/log/supervisor/demo.log
stopsignal=INT               
startsecs=5

これ→stratsecs=5

実験

sleepして終了するプログラム,home/vagrant/test.pyをsupervisorから動かしてみる.

その1

import time
time.sleep(6)
print "finish!"

起動後6秒経って終了.

supervisor> status
demo                             EXITED     Nov 01 02:46 AM

その2

import time
time.sleep(4)
print "finish!"

起動後4秒経って終了.

supervisor> status
demo                             BACKOFF    Exited too quickly (process log may have details)

結果

startsecsより早く終了したら異常終了,遅く終了したら正常終了と判断するみたいです.

ちなみに

import sys
import time
time.sleep(x)
print "finish!"
sys.exit(1)

exitcodeを0以外にしてあげると,BACKOFFでもEXITでも再起動はちゃんとしてくれた.(追記:autorestartをunexpectedにしていたからでした) confの設定の詳しい説明をしてくれているとことがありました。