Omplanlegging av cron-jobber i nodejs ved serverstart

stemmer
41

Jeg har node js-applikasjon der en bruker kan planlegge 4-5 forskjellige cron-jobber. En bruker velger startdato, sluttdato, starttid og sluttid, og følgelig er cron-funksjonene planlagt og noen kampanjer blir generert for å få kontakt med potensielle kunder (eller andre brukere). Jeg bruker NPM pakke node-plan for å oppnå ønsket cron-jobb utførelse, men problemet oppstår hvis min webapplikasjon krasjer i mellom.

I henhold til den offisielle dokumentasjonen av node-schedule ,

Legg merke til at Node Schedule er designet for planlegging i prosessen, dvs. planlagte jobber vil bare skje så lenge skriptet kjører, og timeplanen forsvinner når utførelsen er fullført.

Løsningen jeg kan komme opp for å løse dette er å kalle cron-funksjonene ved å bruke server.js-filen som starter på nytt hver gang serverskriptet kjøres. Men jeg klarer ikke å løse noen av følgende problemer:

  1. En planlegger er en individuell funksjon, ikke kampanjespesifikk, så hvordan vil applikasjonen vite hvilken cron-funksjon som skal startes hvis den ikke er fullført?
  2. En planlegger er en enkelt funksjon, som vil bli kalt hver gang så snart serveren er startet på nytt. Hvis det opprettes 6 forekomster av en server, vil den bli kalt 6 ganger.

Anta at planleggeren min skal utføres mellom 28. mai 11.00 til 31. mai kl. 12.00. Planleggeren starter jobben sin, og noen av kampanjene blir utført i mellom. Hvis serveren min går ned 30. mai, hvordan kan jeg hente de gjenværende dato- og kampanjene og fullføre den derfra?

Så jeg er opptatt av hvordan jeg skal planlegge eller håndtere cron-jobbfunksjonene for kampanjene? Hvis noen av kampanjens cron-jobber blir krasjet i mellom hvis serveren blir stoppet, hvordan skal jeg kunne planlegge eller utføre den cron-funksjonen fra tidspunktet eller datoen som er igjen av den?

Jeg har ikke mye erfaring med cron jobber, og håper på noen nyttige løsninger.

Publisert på 28/05/2020 klokken 19:49
kilden bruker
På andre språk...                            

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