Dag’lerin Zamanlanması

Python ile Apache Airflow’a Giriş

Mike Metzger

Data Engineer

Dag Çalıştırmaları

  • Belirli bir anda bir iş akışının tekil örneği
  • Elle veya schedule ile tetiklenebilir
  • Her iş akışı ve içindeki görevler için durum tutar
    • running
    • failed
    • success
1 https://airflow.apache.org/docs/stable/scheduler.html
Python ile Apache Airflow’a Giriş

Dag Runs görünümü

Tüm Dag’lerde son çalıştırmaları listeleyen Airflow Dag Runs sayfası

Python ile Apache Airflow’a Giriş

Dag Runs durumu

Her çalıştırmanın durum sütununu gösteren Airflow Dag Runs sayfası

Python ile Apache Airflow’a Giriş

Zamanlama ayrıntıları

Bir Dag’i zamanlarken dikkat edilmesi gereken öznitelikler:

  • start_date - Dag çalıştırmasını ilk kez planlama tarih/saat
  • end_date - Yeni Dag örneklerini durdurmak için isteğe bağlı bitiş
    • start_date ve end_date şu datetime(year, month, day) nesnesini kullanır, örn.:
       from pendulum import datetime
       start_date=datetime(2026, 4, 10, tz="UTC")
      
Python ile Apache Airflow’a Giriş

Zamanlama

schedule şunları belirtir:

  • Dag’in ne sıklıkla çalışacağı
  • start_date ile end_date arasındaki dönemde
  • cron söz dizimi, yerleşik önayarlar veya timedelta ile tanımlanabilir.
Python ile Apache Airflow’a Giriş

cron söz dizimi

Beş boşlukla ayrılmış zaman alanını gösteren cron söz dizimi diyagramı

  • Unix cron biçiminden
  • Boşlukla ayrılan 5 alan
  • * her aralıkta çalışmayı ifade eder (ör. her dakika, her gün)
  • Alanlarda virgülle ayrılmış değer listeleri kullanılabilir
Python ile Apache Airflow’a Giriş

cron örnekleri

Beş boşlukla ayrılmış zaman alanını gösteren cron söz dizimi diyagramı

0 12 * * *              # Her gün öğlen çalıştır
* * 25 2 *              # 25 Şubat’ta her dakika çalıştır
0,15,30,45 * * * *      # Her 15 dakikada bir çalıştır
Python ile Apache Airflow’a Giriş

Airflow zamanlayıcı önayarları

Önayarlar:

  • @hourly
  • @daily
  • @weekly
  • @monthly
  • @yearly

cron karşılığı:

  • 0 * * * *
  • 0 0 * * *
  • 0 0 * * 0
  • 0 0 1 * *
  • 0 0 1 1 *
1 https://airflow.apache.org/docs/stable/scheduler.html
Python ile Apache Airflow’a Giriş

Özel önayarlar

Airflow’da üç özel schedule önayarı vardır:

  • None - Asla zamanlama; elle tetiklenen Dag’ler için
  • @once - Yalnızca bir kez zamanla
  • @continuous - Önceki çalıştırma biter bitmez çalıştır
Python ile Apache Airflow’a Giriş

timedelta

  • pendulum.duration da kullanılabilir
  • duration(hours=6)
  • duration(minutes=30)
from pendulum import duration

@dag(
  dag_id="example_dag"
  schedule=duration(days=2)
)
Python ile Apache Airflow’a Giriş

Zamanlamaları uygulama

  • Zamanlama Dag üzerinde tanımlanır
  • schedule parametresi kullanılır:
@dag(
  dag_id="example_dag",
  schedule="0 12 * * *"
)
@dag(
  dag_id="example_dag",
  schedule="@daily"     
)
Python ile Apache Airflow’a Giriş

zamanlama sorunları

Bir Dag’i zamanlarken Airflow şunları yapar:

  • Başlangıç tarihinden sonra tam bir aralık geçmelidir
  • Görevi start_date + schedule anında planlar
'start_date': datetime(2026, 2, 25, tz="UTC")
'schedule': @daily

Dag’in en erken başlangıcı 26 Şubat 2026’dır

Python ile Apache Airflow’a Giriş

Hadi pratik yapalım!

Python ile Apache Airflow’a Giriş

Preparing Video For Download...