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