kill -HUP não está funcionando com daemon aipo

2

Portanto, eu tenho um script de shell que daemoniza o aipo e cria um grupo de trabalhadores executando como um daemon. Gostaria de ter uma maneira de reiniciar a tarefa de aipo quando a fonte subjacente for alterada, pois a opção --autoreload não funciona.

De acordo com a minha leitura dos documentos de aipo, kill -HUP $pid irá matar o processo de aipo e então criar um novo com os mesmos argumentos. No entanto, quando eu tento, aipo desce e não volta. Tem algo errado com o meu comando? O aipo pode estar falhando silenciosamente em segundo plano quando ele é iniciado (e se este for o caso, onde eu iria descobrir o que está errado e ver a saída do registro)?

O comando literal é kill -HUP \'cat /var/run/celery/w1.pid\' . Verificando ps aux | grep celery não retorna nada. Não há saída de arquivo de log após enviar o sinal kill.

Alguma idéia?

    
por Kevin Meyer 22.01.2013 / 00:25

2 respostas

2

O manipulador HUP no Celery simplesmente inicia o procedimento de desligamento e chama execv com os mesmos argumentos que o processo iniciado quando ele é concluído. Essa é uma maneira bem ingênua, já que ela não pode saber se ela voltará, mas ainda não encontramos uma solução melhor que funcione em um manipulador de sinal.

Se você usar celery multi , é melhor usar o comando celery multi restart , que também aguardará a parada do antigo trabalhador (o script generic-init.d usa isso para o comando restart).

Veja o código do manipulador SIGHUP: link Como você pode ver, isso requer que sys.executable e sys.argv sejam definidos para que ele pode ser usado para reiniciar o trabalhador (não sei por que isso não está documentado)

Eu não sei quem começou essa tendência, mas as pessoas esperam que SIGHUP seja reler arquivos de configuração ou reiniciar a si mesmo, mas nem sempre é fácil fazer isso corretamente, e acho que foi irresponsável escolher um sinal que é enviado quando a janela do terminal é fechada;) Nós discutimos a remoção do manipulador do Celery HUP em várias ocasiões.

    
por 22.01.2013 / 14:29
0

Tem certeza de que a documentação que você está consultando é para a versão real implantada? Se a funcionalidade HUP tiver sido adicionada em uma versão mais recente que a que você está usando, o comportamento padrão provavelmente seria encerrar o processo.

(Peço desculpas se isso não for útil, não tenho experiência com esse daemon em particular e é o melhor que posso oferecer.)

    
por 22.01.2013 / 01:23