Zamana Dayalı Zamanlama
Düzenli aralıklarla çalışma çalıştırın
Zamana Dayalı Zamanlama, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Go Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Go Academy kursu toplamda 4 dersten oluşur.
İşleri Zamanlamaya Göre Çalıştırma
Birçok sistemin düzenli aralıklarla yapılan işlere ihtiyacı vardır: geçici dosyaları her gece temizlemek, her sabah özet e-postası göndermek veya her dakika bir API'yi sorgulamak. Bu derste Go'da standart kitaplığı kullanarak zamana dayalı zamanlamaya giriş yapılmaktadır.
time Paketi
Go'nun time paketi temel yapı taşıdır. Önemli araçlar:
time.Sleepbir goroutine'i duraklatırtime.Afterbir kez tetiklenen bir kanal döndürürtime.Tickertekrar tekrar tetiklenirtime.Timerbir gecikmeden sonra bir kez tetiklenir
Saf Bir Döngü
En basit zamanlayıcı şudur: işi yapın, bekleyin, tekrarlayın.
package main
import (
"fmt"
"time"
)
func main() {
for i := 0; i < 3; i++ {
fmt.Println("tick", i)
time.Sleep(10 * time.Millisecond)
}
}Sleep Neden Zamanla Kayar
Sleep döngüsü zamanla kayar: iş 200 ms sürüyor ve siz 1 saniye bekliyorsanız gerçek aralığınız 1,2 saniye olur ve bu fark birikir. Doğru aralıklar için daha sonraki bir derste ele alınan bir Ticker kullanınız.
Tek Seferlik Gecikmeler için time.After
time.After(d), d süresi geçtikten sonra bir kez alım yapan bir kanal döndürür. Zaman aşımları için select içinde kullanışlıdır.
select {
case <-time.After(2 * time.Second):
fmt.Println("2s elapsed")
}time.Timer
Bir Timer bir kez tetiklenir ve durdurulabilir veya sıfırlanabilir; iptal edemeyeceğiniz time.After'dan farklıdır.
t := time.NewTimer(5 * time.Second)
defer t.Stop()
<-t.C
fmt.Println("fired")Belirli Bir Zamanda Zamanlama
Örneğin sabah 3'te çalıştırmak için o ana kadar olan süreyi hesaplayıp bu süre boyunca bekleyiniz veya bir zamanlayıcı kurunuz; ardından ertesi gün için yeniden zamanlayınız.
now := time.Now()
next := time.Date(now.Year(), now.Month(), now.Day(), 3, 0, 0, 0, now.Location())
if next.Before(now) {
next = next.Add(24 * time.Hour)
}
fmt.Println("sleep for", time.Until(next))Sürelerin Türü Vardır
time.Duration, kullanışlı sabitlere sahip bir nanosaniye int64 değeridir: time.Second, time.Minute, time.Hour. Okunabilir aralıklar için bunları çarpınız.
every := 30 * time.Minute
fmt.Println(every)Monotonik Saat ve Duvar Saati
Go'nun time.Now işlevi, saat ayarlamalarından etkilenmeyen ve geçen süreyi ölçmek için kullanılan monotonik bir okuma içerir. Süreler için duvar saati çıkarma işlemi yerine time.Since kullanınız.
start := time.Now()
// ... work ...
fmt.Println("took", time.Since(start))Bir Kitaplığa Ne Zaman Başvurmalı
Karmaşık zamanlamalarda ("her hafta içi 9:15'te") zaman hesaplarını elle yazmak hataya açıktır. Bir sonraki derste ele alınan robfig/cron kitaplığı, cron ifadelerini sizin için ayrıştırır.
Çalıştırılabilir: Sonraki Çalışma Zamanını Hesaplama
Bu kendi içinde çalışan program, yalnızca time paketini kullanarak bir sonraki dakika sınırına ne kadar süre kaldığını hesaplar.
package main
import (
"fmt"
"time"
)
func main() {
now := time.Date(2026, 1, 1, 10, 30, 45, 0, time.UTC)
nextMinute := now.Truncate(time.Minute).Add(time.Minute)
fmt.Println("now:", now.Format("15:04:05"))
fmt.Println("next run:", nextMinute.Format("15:04:05"))
fmt.Println("wait:", nextMinute.Sub(now))
}Hızlı Kontrol
Zamana dayalı zamanlamayı anlayıp anlamadığınızı sınayınız.
Özet
Zamana dayalı zamanlamanın temellerini öğrendiniz:
timepaketi Sleep, After, Timer ve Ticker araçlarını sağlar- Sleep döngüleri zamanla kayar; zamanlayıcılar programa bağlı kalır
time.Untilile hedef zamana kadar olan süreleri hesaplayınız- Geçen süreyi ölçmek için
time.Sinceve monotonik saati kullanınız
Sıkça Sorulan Sorular
“Zamana Dayalı Zamanlama” dersi ücretsiz mi?
Evet — “Zamana Dayalı Zamanlama” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Go Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Go Academy kursu toplamda 4 dersten oluşur.
“Zamana Dayalı Zamanlama” dersinde ne öğreneceğim?
Düzenli aralıklarla çalışma çalıştırın Go Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Go Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Go Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Zamana Dayalı Zamanlama” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Go Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Go Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Zamana Dayalı Zamanlama
- robfig/cron Kütüphanesi
- Aralıklar için Tiklayıcılar
- İşleri Zarifçe Durdurma