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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top