Sunucu yeniden başlatıldığında düğümlerde cron işlerini yeniden zamanlama

oy
41

Ben bir kullanıcı 4-5 farklı cron işleri zamanlayabilirsiniz düğüm js uygulaması var. Bir kullanıcı bir başlangıç_tarihi, bitiş_tarihi, başlangıç_zamanı ve bitiş_zamanı seçer ve buna göre cron fonksiyonları zamanlanır ve olası satışlarla (veya diğer kullanıcılarla) bağlantı kurmak için bazı kampanyalar oluşturulur. İstenen cron-job yürütme elde etmek için npm paket düğüm zamanlama kullanıyorum ama benim web uygulaması arasında çökerse sorun ortaya çıkar.

Resmi belgelerine göre node-schedule ,

Düğüm Zamanlaması'nın işlem içi zamanlama için tasarlandığını, yani zamanlanan işlerin yalnızca komut dosyanız çalıştığı sürece çalışacağını ve yürütme tamamlandığında zamanlamanın kaybolacağını unutmayın.

Bu sorunu çözmek için gelebilir çözüm, sunucu komut dosyası her yürütüldüğünde yeniden başlatılan server.js dosyasını kullanarak cron işlevlerini çağırmaktır. Ancak aşağıdaki sorunlardan bazılarını çözemiyorum:

  1. Bir zamanlayıcı, kampanyaya özgü değil, ayrı bir işlevdir, bu yüzden uygulama tamamlanmadıysa hangi cron işlevinin başlatılacağını nasıl bilecek?
  2. Zamanlayıcı, sunucu yeniden başlatıldığında her seferinde çağrılacak olan tek bir işlevdir. Bir sunucunun 6 örneği oluşturulursa, 6 kez çağrılır.

Zamanlayıcımın 28 Mayıs 11:00 - 31 Mayıs 12:00 arasında çalıştırılacağını varsayalım. Zamanlayıcı işine başlar ve bazı kampanyalar arasında yürütülür. Sunucum 30 Mayıs'ta kapanırsa, kalan tarih ve kampanyalardan nasıl alabilirim ve oradan nasıl tamamlayabilirim?

Peki, kampanyalar için cron iş fonksiyonlarının nasıl planlanacağı veya ele alınacağı konusunda endişeliyim? Sunucu durdurulursa, kampanya cron işlerinden herhangi biri çökerse, bu cron işlevini kalan zaman veya tarihten nasıl yeniden programlayabilir veya yürütebilirim?

Bazı kullanışlı çözümler umarak cron işleri konusunda fazla tecrübem yok.

Oluştur 28/05/2020 saat 19:49
kaynak kullanıcı
Diğer dillerde...                            

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