Kategorien
Entwicklung GO Lang Programmierung

Cronjobs in GO

Sie wollen direkt in einem Projekt Cronjobs auf bestimmte Funktionen setzten? Dann ist dieses Tutorial genau das richtige für Sie.

Wie fangen wir an? Dazu schauen wir uns einmal ein Github Repository an: jasonlvhit/gocron

Mit dieser Library können Sie nun recht einfach Cronjobs definieren. Dazu importieren wir als erstes einmal die Library in Ihr GO Lang Projekt. Das können Sie wie folgt machen:

go get github.com/jasonlvhit/gocron

Damit Sie nun den ersten Cronjob definieren können muss ein Cronjob auf eine Funktion zeigen und der Prozess gestartet werden. Das ganze kann dann wie folgt aussehen:

// Config server vision cron
gocron.Every(1).Minutes().Do(vision.Check)

// Config sms clean cron
gocron.Every(7).Days().Do(clean.UsedSMS)

// Start cron
<-gocron.Start()

Das hier ist ein Beispiel aus einem unserer Projekte. Dabei wird einmal ein Cronjob gestartet, welcher jede Minute die Funktion vision.Check() aufruft. Und eine Funktion die nur alle sieben Tage die Funktion clean.UsedSMS() aufruft. Die Library verfügt noch über deutlich mehr Funktionen. Man kann Cronjobs für Sekunden, Minuten, Stunden, Tage und Wochen definieren. Dazu kann man auch noch definieren, ab wann der Cronjob laugen soll. Wenn man dies nicht konfiguriert wurde, dann werden die Cronjobs mit dem starten der Applikation gestartet. Das heißt der von mit definierte Cronjob für die 7 Tage wird auch erst sieben Tage nach Start der Applikation das erste mal ausgeführt. Um dies zu verhindern könnte man folgendes ergänzen.

// Begin job at a specific date/time
t := time.Date(2019, time.November, 10, 15, 0, 0, 0, time.Local)
gocron.Every(1).Hour().From(&t).Do(task)

// Start cron
<-gocron.Start()

Für einen weiteren Überblick über den Funktionsumfang der Library würde ich Ihnen einen Blick auf die Library empfehlen. Diese finden Sie hier.

Von Jonas Kwiedor

Full- Stack Developer aus Hamburg. Liebt es sich mit Schnittstellen & Automationen auseinander zu setzen und sich mit der Programmiersprache GO Lang zu beschäftigen.