2016-07-27 4 views
0

Я видел несколько старых сообщений, задающих это, но ответов не было. Надеюсь, кто-то, кто знает это решение, может помочьГруппа перезапуска Supervisord, когда один процесс выходит из строя/убит

Если группа процессов супервизора имеет один член, он может перезапустить все члены этой группы?

В качестве альтернативы я мог бы, вероятно, создать EventListener, чтобы перезапустить группу, но я надеялся на более элегантное решение от supervisord.

Спасибо!

ответ

1

В качестве временного решения, можно сделать следующие

Добавьте следующие строки в файл конф:

; the below section must remain in the config file for RPC 
; (supervisorctl/web interface) to work, additional interfaces may be 
; added by defining them in separate rpcinterface: sections 
[rpcinterface:supervisor] 
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface 

; Event listener, on any kid going down, restart all the children 
[eventlistener:good_listener] 
command=python /path/to/python_script.py 
events=PROCESS_STATE 

затем сценарий:

#!/usr/bin/python 
import sys 
from supervisor.childutils import listener 
from subprocess import call 

def write_stderr(s): 
    sys.stderr.write(s) 
    sys.stderr.flush() 

def main(): 
    while 1: 
     cmd_msg, cmd_body = listener.wait(sys.stdin, sys. 

     if 'eventname' in cmd_msg: 
     if cmd_msg['eventname'] == 'PROCESS_STATE_EXITED': 
      write_stderr('Process has quit\n') 
      call(["supervisorctl", "restart", "all"]) 

     listener.ok(sys.stdout) 

if __name__ == '__main__': 
    main() 

Это будет делать то, что вы хотите , но это не лучший способ сделать что-то (imo).

 Смежные вопросы

  • Нет связанных вопросов^_^