Bifurcação do trabalho atrasado do servidor de aplicativos?
-
21-09-2019 - |
Pergunta
Aqui está meu cenário ideal simples para quando eu gostaria que o trabalho atrasado fosse executado:
- Quando o primeiro servidor de aplicativos (seja através do vira-lata ou do passageiro) for iniciado, ele iniciará meus trabalhos atrasados.
- Quando o último servidor de aplicativos em execução terminar, todos os trabalhos atrasados serão eliminados.
A primeira parte (iniciar) é factível, embora eu não tenha certeza de qual é a maneira "certa" ou "melhor" de fazer isso.Basta fazer uma chamada de sistema condicional (no processo que ainda não está em execução) para delay_job start?
A segunda parte (rescisão) - bem, não tenho certeza se é viável ou não.Definitivamente não tenho ideia de como esse efeito poderia ser alcançado.
Algum pensamento ou ideia?
Existe outra maneira de iniciar/terminar trabalhadores atrasados que você acha que é a melhor?
Pergunta lateral:As principais questões acima são para o ambiente de produção – um caso mais difícil porque há vários servidores de aplicativos em execução ao mesmo tempo.A mesma coisa poderia ser feita facilmente no ambiente de desenvolvimento (onde é garantido que haja apenas um servidor de aplicativos, e não um cluster deles), bifurcando um processo filho para executar os trabalhos de trabalho atrasados que sempre terminariam quando o pai terminasse?Como eu faria isso?
Solução
Você definitivamente poderia encerrar com Deus.
Basta observar os processos do aplicativo e Deus disparará um retorno de chamada quando todos eles forem interrompidos.