0Pricing
Go Academy · Lektion

Die robfig/cron-Bibliothek

Mit Cron-Syntax planen

Die robfig/cron-Bibliothek ist eine kostenlose Go Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Go Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.

Cron-Ausdrücke in Go

Mit der Bibliothek robfig/cron können Sie Aufgaben mit der vertrauten Cron-Syntax planen, statt die Zeitberechnung selbst zu schreiben. Installieren Sie sie mit go get github.com/robfig/cron/v3.

import "github.com/robfig/cron/v3"

Auffrischung der Cron-Syntax

Ein standardmäßiger Cron-Ausdruck besteht aus fünf Feldern:

  • Minute (0–59)
  • Stunde (0–23)
  • Tag des Monats (1–31)
  • Monat (1–12)
  • Wochentag (0–6)

Beispiel: 0 9 * * 1-5 = 9:00 Uhr an Werktagen.

Einen Scheduler erstellen

cron.New() gibt einen Scheduler zurück. Sie fügen Aufgaben hinzu und starten ihn anschließend.

c := cron.New()
c.Start()
defer c.Stop()

Eine Aufgabe hinzufügen

AddFunc registriert eine Funktion zur geplanten Ausführung und gibt eine Entry-ID sowie einen Fehler zurück, wenn die Spezifikation ungültig ist.

id, err := c.AddFunc("30 * * * *", func() {
    fmt.Println("runs at minute 30")
})
if err != nil {
    log.Fatal(err)
}
_ = id

Das Sekundenfeld

robfig/cron v3 verwendet standardmäßig eine Spezifikation mit fünf Feldern (ohne Sekunden). Um eine Spezifikation mit sechs Feldern einschließlich Sekunden zu aktivieren, erstellen Sie den Cron-Scheduler mit der Sekundenoption.

c := cron.New(cron.WithSeconds())
c.AddFunc("*/5 * * * * *", func() { fmt.Println("every 5s") })

Vordefinierte Zeitpläne

Praktische Makros sind verfügbar:

  • @hourly
  • @daily
  • @weekly
  • @every 1h30m
c.AddFunc("@every 1h30m", func() { fmt.Println("every 90 min") })
c.AddFunc("@daily", func() { fmt.Println("midnight") })

Jobs entfernen

Verwenden Sie die zurückgegebene EntryID, um einen Job dynamisch zu entfernen.

id, _ := c.AddFunc("@hourly", task)
// later:
c.Remove(id)

Jobs werden in Goroutinen ausgeführt

Jeder geplante Job wird in einer eigenen Goroutine ausgeführt. Wenn sich ein Job mit seinem nächsten Aufruf überschneiden kann, schützen Sie ihn vor gleichzeitiger Ausführung oder verwenden Sie einen Wrapper, der überlappende Ausführungen überspringt.

Zeitzonen

Standardmäßig verwenden Zeitpläne die lokale Zeit des Computers. Übergeben Sie einen Ort, um die Zeitzone ausdrücklich festzulegen und Überraschungen durch die Sommerzeit zu vermeiden.

loc, _ := time.LoadLocation("America/New_York")
c := cron.New(cron.WithLocation(loc))

Parsen ohne Ausführung

Sie können eine Spezifikation validieren oder mit einem Parser den nächsten Aufruf berechnen. Das eignet sich hervorragend für Tests und um Benutzern die nächste Ausführung anzuzeigen.

sched, _ := cron.ParseStandard("0 9 * * 1-5")
next := sched.Next(time.Now())
fmt.Println("next run:", next)

Ausführbar: Nächsten Cron-Aufruf berechnen (Analogie)

robfig/cron ist eine externe Bibliothek. Dieses Snippet aus der Standardbibliothek bildet die einfachste Cron-Regel „jede Minute am Minutenanfang“ nach, indem es den nächsten passenden Zeitpunkt berechnet.

package main

import (
    "fmt"
    "time"
)

func nextRun(from time.Time) time.Time {
    return from.Truncate(time.Minute).Add(time.Minute)
}

func main() {
    now := time.Date(2026, 1, 1, 8, 15, 30, 0, time.UTC)
    fmt.Println("now:", now.Format("15:04:05"))
    fmt.Println("next:", nextRun(now).Format("15:04:05"))
}

Kurzer Test

Testen Sie Ihr Verständnis der Bibliothek robfig/cron.

Zusammenfassung

Sie haben die Bibliothek robfig/cron kennengelernt:

  • cron.New() + AddFunc(spec, fn) + Start()
  • Standardmäßig eine Spezifikation mit 5 Feldern; WithSeconds fügt ein Sekundenfeld hinzu
  • Makros wie @daily und @every vereinfachen häufig verwendete Zeitpläne
  • Verwenden Sie Remove, Orte und ParseStandard für Kontrolle und Tests

Häufig gestellte Fragen

Ist die Lektion „Die robfig/cron-Bibliothek“ kostenlos?

Ja — der vollständige Text von „Die robfig/cron-Bibliothek“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Go Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Go Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Die robfig/cron-Bibliothek“?

Mit Cron-Syntax planen Du übst Go Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Go Academy zu starten?

Keine Vorkenntnisse erforderlich. Go Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Die robfig/cron-Bibliothek“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Go Academy-Lektion Code schreiben und ausführen?

Ja. Jede Go Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Zeitbasierte Planung
  2. Die robfig/cron-Bibliothek
  3. Ticker für Intervalle
  4. Geordnetes Beenden von Jobs
← Zurück zu Go Academy