Ana içeriğe atla

Zamanlanmis Gorev Calismasi (Cron Job Execution)

Zamanlanmis Gorev Calismalari, bir cron gorevinin her calistirildigindaki gecmis kayitlaridir. Calisma durumunu, konsol gunluklerini, donus degerlerini, zamanlama bilgilerini ve olusan hatalari yakalar.

Bir Bakista

  • Her zamanlanmis ve manuel calismayi kaydeder
  • Konsol ciktisini ve betik donus degerlerini yakalar
  • Calisma suresini ve durumunu takip eder
  • Durum ve tetikleme tipine gore filtrelemeyi destekler
  • Hata ayiklama ve izleme icin faydali

Veri Yapisi

// apps/azalt/src/server/db/types/cron-job.ts (basitlestirilmis)
interface CronJobExecution {
  id: string;
  cronJobId: string;
  status: "running" | "success" | "failed" | "timeout";
  triggerType: "scheduled" | "manual";
  triggeredById: string | null;    // Manuel tetiklemeler icin kullanici ID'si
  startedAt: Date;
  finishedAt: Date | null;
  executionTimeMs: number | null;  // Milisaniye cinsinden sure
  logs: string | null;             // Konsol ciktisi
  error: string | null;            // Basarisizsa hata mesaji
  output: JsonValue | null;        // Betikten donus degeri
}

Calisma Durumu

DurumAciklama
runningSu anda calisiyor (devam ediyor)
successHatasiz tamamlandi
failedBir hata nedeniyle sonlandirildi
timeout5 dakikalik zaman sinirini asti

Tetikleme Tipleri

TipAciklamatriggeredById
scheduledZamanlayici tarafindan otomatik calistirmanull
manualKullanici tarafindan arayuz veya API uzerinden baslatilmisKullanicinin ID’si

Gunlukler ve Cikti

Konsol Gunlukleri: Tum console.log(), console.error(), vb. cagrilar yakalanir:
// Cron gorev kodunuzda
console.log('Veri senkronizasyonu baslatiliyor...');
console.log(`${items.length} oge isleniyor`);
console.error('Uyari: API hiz siniri yaklasiyori');

// Bunlar execution.logs'ta su sekilde gorunur:
// [2024-01-15T10:30:00.000Z] Veri senkronizasyonu baslatiliyor...
// [2024-01-15T10:30:01.234Z] 150 oge isleniyor
// [2024-01-15T10:30:02.567Z] Uyari: API hiz siniri yaklasiyoru
Donus Degeri: Betigin donus degeri output’ta saklanir:
// Cron gorev kodunuzda
const results = await processData();
return {
  processed: results.length,
  errors: results.filter(r => r.error).length,
  timestamp: new Date().toISOString()
};

// Bu nesne execution.output'ta saklanir

Calisma Istatistikleri

Ust CronJob, calismalardan toplu istatistikler icerir:
interface ExecutionStats {
  totalExecutions: number;      // Tum zamanlarin calisma sayisi
  successCount: number;         // Basarili calismalar
  failedCount: number;          // Basarisiz calismalar
  lastSuccess: Date | null;     // En son basari
  lastFailure: Date | null;     // En son basarisizlik
  avgExecutionTimeMs: number | null;  // Ortalama sure
}

Guvenlik ve Izinler

  • Goruntuleme: Herhangi bir organizasyon uyesi calisma gecmisini gorebilir
  • Olusturma: Yalnizca sistem (zamanlayici veya manuel tetikleme yoluyla)
  • Silme: Desteklenmiyor (denetim izi korunur)

API Notlari

  • cronJob.listExecutions: Durum ve tetikleme tipine gore filtreleme ile sayfalandirilmis liste
  • cronJob.getExecution: Gunlukler ve cikti dahil tam calisma detaylari
  • cronJob.get: Son calismalar ve toplu istatistikleri icerir

Izleme En Iyi Uygulamalari

  1. Basarisizlik kaliplarini kontrol edin: Belirli zamanlarda yinelenen hatalara bakin
  2. Calisma suresini izleyin: Ani artislar sorunlari gosterebilir
  3. Gunlukleri duzenliolarak inceleyin: Uyarilari basarisizlik olmadan once yakalay
  4. Uyarilar kurun: Harici izlemeyi tetiklemek icin ciktiyi kullanin
  5. Basari oranlarini takip edin: successCount / totalExecutions hesaplayin

Ornek: Basarisiz Bir Calismayi Hata Ayiklama

// API uzerinden calisma detaylarini al
const execution = await api.cronJob.getExecution({ id: 'exec-123' });

// Durum ve hatayi kontrol et
if (execution.status === 'failed') {
  console.log('Hata:', execution.error);
  console.log('Gunlukler:', execution.logs);
  console.log('Sure:', execution.executionTimeMs, 'ms');
}

// Zaman asimi sorunlari icin
if (execution.status === 'timeout') {
  console.log('Gorev 5 dakikalik siniri asti');
  console.log('Son gunluklenen cikti:', execution.logs);
}

Ilgili Kavramlar

  • CronJob - Ust zamanlanmis otomasyon gorevi
  • CronJobVariable - Ortam degiskenleri ve gizli degerler