Reprogramação de cron jobs em nodejs no reinício do servidor

votos
31

Eu tenho uma aplicação de nó js onde um usuário pode agendar 4-5 trabalhos cron diferentes. Um usuário seleciona uma data_de_início, data_de_fim, hora_de_início e hora_de_fim e, portanto, as funções do cron são agendadas e algumas campanhas são geradas para se conectar com leads (ou outros usuários). Eu estou usando o pacote npm node-schedule para alcançar a execução do cron-job desejado, mas o problema surge se minha aplicação web travar no meio

De acordo com a documentação oficial do node-schedule,

Note que o Agendamento de Nó é projetado para agendamento em processo, ou seja, os trabalhos agendados só serão executados enquanto seu script estiver em execução, e o agendamento desaparecerá quando a execução for concluída.

A solução que eu posso encontrar para resolver isso é chamar as funções do cron usando o arquivo server.js que é reiniciado toda vez que o script do servidor é executado. Mas eu não consigo resolver alguns dos seguintes problemas:

  1. Um scheduler é uma função individual, não específica de campanha, então como a aplicação saberá qual cron-função iniciar se não foi completada?
  2. Um scheduler é uma função única, que será chamada toda vez que o servidor for reiniciado. Se forem criadas 6 instâncias de um servidor, ele será chamado 6 vezes

Suponha que o meu agendador deve ser executado entre 28 de Maio das 11:00 e 31 de Maio das 12:00. O agendador inicia seu trabalho e algumas das campanhas são executadas no meio. Se o meu servidor cair no dia 30 de Maio, como posso pegar a partir da data e campanhas restantes e completá-las a partir daí?

Então estou preocupado com a forma de agendar ou lidar com as funções de cron job para as campanhas? Se qualquer um dos cron jobs da campanha for interrompido se o servidor estiver parado, como devo ser capaz de reprogramar ou executar essa função cron a partir da hora ou data que restou dela?

Eu não tenho muita experiência com cron jobs, esperando por algumas soluções úteis.

Publicado 28/05/2020 em 19:49
fonte usuário
Em outras línguas...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more