Reeșalonarea lucrărilor cron în nodejs pe repornirea serverului

voturi
0

Am o aplicație de nod js unde un utilizator poate programa 4-5 lucrări cron diferite. Un utilizator selectează data de început, data de finalizare, data de pornire și ora de finalizare și, în consecință, funcțiile cron sunt programate și unele campanii sunt generate pentru conectarea cu clienții (sau alți utilizatori). Folosesc npm-pachet npm -calendar pentru a realiza execuția dorită cron-job, dar apare problema dacă aplicația mea web se blochează între ele.

Conform documentației oficiale din node-schedule .

Rețineți că Node Schedule este proiectat pentru planificarea în proces, adică lucrările programate vor fi declanșate numai atâta timp cât script-ul dvs. rulează și programul va dispărea la finalizarea execuției.

Soluția pe care pot să o rezolv este să apelez funcțiile cron folosind fișierul server.js care repornește de fiecare dată când se execută scriptul serverului. Dar nu sunt în măsură să rezolv unele dintre următoarele probleme:

  1. Un planificator este o funcție individuală, nu specifică campaniei, deci cum va ști aplicația ce funcție cron să pornească dacă nu a fost finalizată?
  2. Un planificator este o singură funcție, care va fi apelată de fiecare dată imediat ce repornirea serverului. Dacă sunt create 6 instanțe ale unui server, acesta va fi apelat de 6 ori.

Să presupunem că programul meu se va executa în perioada 28 mai 11:00 - 31 mai 12:00. Planificatorul își începe munca și unele dintre campanii sunt executate între ele. Dacă serverul meu coboară la 30 mai, cum pot să iau din data și ora campaniei rămase și să o completez de acolo?

Așadar, mă preocupă cum să planific sau să gestionez funcțiile cron job pentru campanii? Dacă oricare dintre lucrările cron de campanie este blocată între dacă serverul este oprit, cum ar trebui să pot reprograma sau executa acea funcție cron din momentul sau data rămasă?

Nu prea am experiență cu joburi cron, în speranța unor soluții utile.

Întrebat 28/05/2020 la 19:49
sursa de către utilizator
În alte limbi...                            

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