Supervisord vazando processos filho lançados através do shell script

4

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?

    
por Leopd 19.12.2012 / 21:25

2 respostas

2

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.

    
por 20.11.2014 / 14:55
0

Recentemente, escrevi um artigo que discute esse problema e explica como resolvê-lo corretamente:

link

    
por 04.01.2015 / 11:50