Veja uma pergunta semelhante no Stackoverflow:
O tornado não reinicia corretamente no supervisor
A solução que funcionou para mim foi usar stopasgroup = true
no grupo [program:x]
relevante.
Estou usando o supervisor 3 para daemonizar um processo python, que é iniciado por meio de um script bash que configura algumas configurações para o python. O script bash executa o programa python em primeiro plano, FWIW.
Esta configuração tem o seguinte problema: quando o supervisord tenta matar o processo, ele apenas mata o script bash, não o processo python. Então acabo vazando processos python executando códigos antigos e todos os tipos de problemas acontecem. Como posso consertar isso?
Existe alguma opção de configuração para o supervisor dizer a ele para matar processos filhos também?
Ajudaria o script bash a capturar o sinal TERM e explicitamente passá-lo para o filho? Isso parece desnecessário desde quando eu o executo a partir de um shell interativo, o processo python filho é morto muito bem.
Eu vejo que o supervisor me permite escolher com qual sinal matar, padrão para TERM
agora. Pode mudar essa ajuda?
Veja uma pergunta semelhante no Stackoverflow:
O tornado não reinicia corretamente no supervisor
A solução que funcionou para mim foi usar stopasgroup = true
no grupo [program:x]
relevante.
Recentemente, escrevi um artigo que discute esse problema e explica como resolvê-lo corretamente:
Tags python ubuntu supervisord