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)
}
_ = idDas 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;
WithSecondsfügt ein Sekundenfeld hinzu - Makros wie
@dailyund@everyvereinfachen häufig verwendete Zeitpläne - Verwenden Sie
Remove, Orte undParseStandardfü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
- Zeitbasierte Planung
- Die robfig/cron-Bibliothek
- Ticker für Intervalle
- Geordnetes Beenden von Jobs