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.