Veri ve Entegrasyon Tasarımı / Uygulama ve satın alma rehberi

Zamanlanmış İşler ve Cron: Aynı Raporun İki Kez Gönderilmesini Önlemek

Her gece çalışan bir görev, her gece yalnızca bir kez başarılı olmuş demek değildir. Sunucu yeniden başlayabilir, önceki iş uzayabilir veya sonuç kaydedilmeden bağlantı kesilebilir. Takvim ifadesiyle işin güvenilirliğini birbirinden ayırın.

Çalışma anıyla iş dönemini farklı kaydedin

Bir aylık rapor bugün tekrar üretilse de hâlâ aynı aya ait olabilir. Görev çalıştırma kimliği ile işin kapsadığı dönem ayrı olmalıdır. Böylece bir ağ sorunu nedeniyle yeniden başlatılan işlem, yeni dönemmiş gibi iki kez bildirim veya kayıt üretmez. Dosya adındaki tarihe tek başına güvenmeyin.

Kubernetes CronJob dokümantasyonu zamanlamanın yaklaşık olduğunu, bazı koşullarda birden fazla iş oluşabileceğini veya çalışmanın kaçabileceğini belirtir; görevlerin tekrar çalışmaya dayanıklı tasarlanmasını önerir. [1] Bu, bütün zamanlayıcıların aynı ayrıntılara sahip olduğu anlamına gelmez; kullandığınız altyapının garantileri ayrıca incelenmelidir.

Çakışma politikasını işin anlamına göre seçin

Önceki görev bitmeden yenisi başlarsa ikisi birlikte çalışabilir mi? Bazı raporlar bağımsız olabilir, stok mutabakatı gibi işler ise çakışmamalıdır. Atla, sıraya al, birleştir veya önceki işi durdur seçeneklerinin iş etkisini değerlendirin. Yalnızca sunucu kaynağını düşünerek karar vermeyin.

Kubernetes’te eşzamanlılık politikası aynı CronJob tarafından oluşturulan işler için geçerlidir. [1] İki ayrı görev veya başka bir manuel yol aynı işi başlatabiliyorsa ayrıca uygulama düzeyinde kontrol gerekir. Tek zamanlayıcı ayarı, bütün sistemde tekillik garantisi olarak sunulmamalıdır.

Yan etkileri tekrar çalışmaya dayanıklı yapın

Varsayımsal görev haftalık bayi özetini hazırlayıp e-posta gönderiyor olsun. Dosya üretilmiş ve mesaj gönderilmiş, fakat son durum kaydedilememiş olabilir. Görevi baştan çalıştırmak ikinci mesajı gönderebilir. Hazırlama, gönderim talebi ve doğrulanmış sonuç için ayrı kayıtlar gerekebilir.

Kilit kullanılıyorsa süresi dolan veya bağlantısı kesilen işçinin hâlâ çalışabileceğini hesaba katın. Sadece “kilit var mı?” kontrolü her durumda yeterli değildir. İşlem kimliği, güncel sahiplik ve yan etkiyi uygulayan sistemin tekrar davranışı birlikte değerlendirilmelidir. Dış servisin garantisi bilinmiyorsa kesin tek gönderim iddiasında bulunmayın.

Örnek görev kabul matrisi

Örnek karar ve kabul kontrolleri
DurumBeklenen kararKanıt
Önceki iş uzadıTanımlı çakışma politikasıİş başlangıç ve bitişleri
Sunucu yeniden başladıEksik dönem bulunurDönem ve tamamlanma kaydı
Gönderim yanıtı kaybolduSonuç uzlaştırılırDış işlem referansı
Manuel tekrar istendiAynı dönem kontrollü işlenirYetki ve tekrar gerekçesi

Kaçırılan bir görevin sonradan çalıştırılması her zaman istenmez. Eski kampanya mesajını günler sonra göndermek yanlış olabilir. İşin son kullanma koşulunu ve telafi politikasını belirleyin. “Çalışmadıysa hepsini çalıştır” genel kuralı farklı iş türlerinde farklı sonuçlar doğurur.

Başarılı çıkış kodundan fazlasını izleyin

Programın hata vermeden kapanması, gerekli kayıtların işlendiğini kanıtlamaz. Beklenen dönem, işlenen adet, atlanan kayıtlar ve dış sonuçlar raporlanabilir. Boş çıktı gerçekten veri olmadığı için mi, bağlantı veya filtre sorunu nedeniyle mi oluştu? Bu fark tanımlı kontrollerle görülebilsin.

Pilot testte uzun çalışma, zorunlu kesinti, tekrar tetik ve gecikmiş başlangıç kullanın. Saat dilimi de test kapsamına girsin. Görevlerin bakım sorumlusu, uyarı alıcısı ve güvenli yeniden başlatma yöntemi belgelenmelidir. Böylece gecelik görev, yalnızca onu yazan kişinin anlayabildiği bir kutu olarak kalmaz.

Sık sorulan sorular

Bir cron satırı yazmak yeterli mi?

Takvimi tanımlar, fakat tekrar, hata ve telafi davranışını çözmez. İşin kabul koşulları ve izleme kaydı ayrıca hazırlanmalıdır.

Kilit varsa işlem kesin bir kez mi çalışır?

Hayır. Kilit kaybı, süre aşımı ve dış sistem yan etkileri değerlendirilmelidir. Uygulama düzeyindeki tekillik ve uzlaştırma kontrolleri önemlidir.

Teknik kaynaklar

  1. Kubernetes: CronJob çakışma ve zamanlama sınırları

Kaynaklar teknik kavramları destekler. Örnek tablolar ve senaryolar önerilen çalışma araçlarıdır; gerçek müşteri sonucu, bağımsız denetim veya platform garantisi değildir. Uygulama öncesinde kullanılan ürünün güncel koşulları kontrol edilmelidir.

Bu ihtiyacı çalışan bir sisteme dönüştürelim.

Mevcut sisteminizi, sorun yaşadığınız iş akışını ve beklediğiniz sonucu paylaşın. Ganz Dijital ile projenizin kapsamını ve kabul koşullarını netleştirin.

İlgili hizmeti inceleWhatsApp üzerinden görüşelim →

Hazırlama notu: İçerik, belirtilen kaynaklar ve özgün örnek senaryolar kullanılarak yapay zekâ desteğiyle hazırlanmıştır. Sayısal örnekler aksi belirtilmedikçe varsayımsaldır. İşletmeye özel güvenlik, hukuki ve operasyonel gereksinimler ayrıca değerlendirilmelidir.