Good days!
Today, have faced with the next problem - i'm unable to catch SIGTERM signal
from supervisor (on process restart), with python signal lib. Here is the
sample code:
#program section in config
[program:sample]
command = /mnt/wrk/nimble/nimble-server/bin/sample
environment =
PYTHON_EGG_CACHE="/mnt/wrk/nimble/nimble-server/var/run/.eggs",
DJANGO_SETTINGS_MODULE="nimble.api.config.core.settings"
user = bgotw
startsecs = 2
startretries = 3
redirect_stderr = true
autostart = true
autorestart = true
redirect_stderr = true
stdout_logfile = /mnt/wrk/nimble/nimble-server/var/logs/sample.log
stdout_logfile_maxbytes = 5MB
stdout_logfile_backups = 10
stopsignal = TERM

/mnt/wrk/nimble/nimble-server/bin/sample calls next function:
def main():
    '''
        Main inintialisation and run
    '''

    def handle_quit(signum, frame):
        log.debug("!!!!!!!!! %s" % str(signum))
        print signum, frame

    signal.signal(signal.SIGTERM, handle_quit)
    signal.signal(signal.SIGINT, handle_quit)
    signal.signal(signal.SIGABRT, handle_quit)
    signal.signal(signal.SIGALRM, handle_quit)
    signal.signal(signal.SIGBUS, handle_quit)
    signal.signal(signal.SIGCHLD, handle_quit)
    signal.signal(signal.SIGCLD, handle_quit)
    signal.signal(signal.SIGCONT, handle_quit)
    signal.signal(signal.SIGFPE, handle_quit)
    signal.signal(signal.SIGHUP, handle_quit)
    signal.signal(signal.SIGILL, handle_quit)
    signal.signal(signal.SIGIO, handle_quit)
    signal.signal(signal.SIGIOT, handle_quit)
    signal.signal(signal.SIGPIPE, handle_quit)
    signal.signal(signal.SIGPOLL, handle_quit)
    signal.signal(signal.SIGPROF, handle_quit)
    signal.signal(signal.SIGPWR, handle_quit)
    signal.signal(signal.SIGQUIT, handle_quit)
    signal.signal(signal.SIGRTMAX, handle_quit)
    signal.signal(signal.SIGRTMIN, handle_quit)
    signal.signal(signal.SIGSEGV, handle_quit)
    #signal.signal(signal.SIGSTOP, handle_quit)
    signal.signal(signal.SIGSYS, handle_quit)
    signal.signal(signal.SIGTRAP, handle_quit)
    signal.signal(signal.SIGTSTP, handle_quit)
    signal.signal(signal.SIGTTIN, handle_quit)
    signal.signal(signal.SIGTTOU, handle_quit)
    signal.signal(signal.SIGURG, handle_quit)
    signal.signal(signal.SIGUSR1, handle_quit)
    signal.signal(signal.SIGUSR2, handle_quit)
    signal.signal(signal.SIGVTALRM, handle_quit)
    signal.signal(signal.SIGWINCH, handle_quit)
    signal.signal(signal.SIGXCPU, handle_quit)
    signal.signal(signal.SIGXFSZ, handle_quit)
    #signal.signal(signal.SIG_DFL, handle_quit)
    signal.signal(signal.SIG_IGN, handle_quit)

    import time
    while True:
        log.debug("????")
        time.sleep(5)

so:
1. Make process "sample" restart with supervisorctl - nothing writes to log
(see handle_quit function);
2. Start process "sample" with supervisorctl and then, sent SIGTERM to
process "sample", from htop - string "!!!!!!!!! 15" will appear in log-file.

any ideas?
thanks for your attention.
_______________________________________________
Supervisor-users mailing list
Supervisor-users@lists.supervisord.org
http://lists.supervisord.org/mailman/listinfo/supervisor-users

Reply via email to