Gocron: Ein Golang -Jobplanungspaket

GoCron ist ein Job-Planungspaket, mit dem Sie in festgelegten Intervallen GO-Funktionen ausführen können.
Wenn Sie chatten möchten, finden Sie uns auf Slack bei
Schneller Start
go get github.com/go-co-op/gocron/v2
package main
import (
"fmt"
"time"
"github.com/go-co-op/gocron/v2"
)
func main () {
// create a scheduler
s , err := gocron . NewScheduler ()
if err != nil {
// handle error
}
// add a job to the scheduler
j , err := s . NewJob (
gocron . DurationJob (
10 * time . Second ,
),
gocron . NewTask (
func ( a string , b int ) {
// do things
},
"hello" ,
1 ,
),
)
if err != nil {
// handle error
}
// each job has a unique id
fmt . Println ( j . ID ())
// start the scheduler
s . Start ()
// block until you are ready to shut down
select {
case <- time . After ( time . Minute ):
}
// when you're done, shut it down
err = s . Shutdown ()
if err != nil {
// handle error
}
}Beispiele
- Gehen Sie Beispiele
- Beispielverzeichnis
Konzepte
- HOB : Der Job fasst eine "Aufgabe" zusammen, die aus einer GO -Funktion und allen Funktionsparametern besteht. Der Job bietet dem Scheduler dann die Zeit, die der Job als nächstes ausführen sollte.
- Scheduler : Der Scheduler verfolgt alle Jobs und sendet jeden Job an den Testamentsvollstrecker, wenn er ausgeführt werden kann.
- Executor : Der Executor ruft die Aufgabe des Jobs an und verwaltet die Komplexität verschiedener Anforderungen an die Arbeitsplatzausführung (z.
Merkmale
Jobtypen
Jobs können in verschiedenen Abständen ausgeführt werden.
- Dauer : Jobs können zu einer festen
time.Duration ausgeführt werden. - Zufällige Dauer : Jobs können zu einer zufälligen
time.Duration ausgeführt werden. - Cron : Jobs können mit einem Crontab ausgeführt werden.
- Täglich : Jobs können alle x Tage zu bestimmten Zeiten ausgeführt werden.
- Wöchentlich : Jobs können alle x Wochen an bestimmten Wochentagen und zu bestimmten Zeiten ausgeführt werden.
- Monatlich : Arbeitsplätze können alle x Monate an bestimmten Tagen des Monats und zu bestimmten Zeiten ausgeführt werden.
- Einmal : Jobs können zu bestimmten Zeiten ausgeführt werden (entweder ein- oder viele Male).
Parallelitätsgrenzen
Jobs können einzeln oder über den gesamten Scheduler eingeschränkt werden.
- Per Job Begrenzung mit dem Singleton -Modus : Jobs können auf eine einzige gleichzeitige Ausführung beschränkt sein, die entweder umgebaut (überschneidet überlappende Ausführungen) oder Warteschlangen (wartet auf die vorherige Ausführung).
- Pro Scheduler -Begrenzung mit dem Grenzmodus : Jobs können auf eine bestimmte Anzahl von gleichzeitigen Ausführungen im gesamten Scheduler beschränkt werden, indem sie entweder unter Verwendung von Ledule (überspringen Sie, wenn das Limit erfüllt ist) oder der Warteschlange (Jobs werden zu einer Warteschlange hinzugefügt, um zu warten, bis das verfügbare Limit verfügbar ist).
- HINWEIS: Ein Scheduler -Limit und ein Joblimit können sowohl aktiviert werden.
Verteilte Fälle von Stimmrück
Es können mehrere Fälle von Gocron ausgeführt werden.
- Wähler : Ein Wähler kann verwendet werden, um eine einzelne Instanz von Gocron zu wählen, die als primär bearbeitet werden kann. Die anderen Instanzen prüfen, ob ein neuer Führer gewählt werden muss.
- Implementierungen: Go-Co-Op-Wähler (sehen Sie nicht, was Sie brauchen? Anfrage auf Slack, um ein Repo zu erstellen, um es beizutragen!)
- Schließfach : Ein Schließfach kann verwendet werden, um jeden Lauf eines Jobs auf eine einzelne Instanz von Gocron zu sperren. Locker kann bei Job oder Scheduler sein. Wenn es sowohl bei Job als auch bei Scheduler definiert ist, wird Locker of Job Vorrang haben.
- Implementierungen: Go-Co-op-Schließfächer (sehen Sie nicht, was Sie brauchen? Anfrage auf Slack, um ein Repo zu erstellen, um es beizutragen!)
Ereignisse
Jobveranstaltungen können Aktionen auslösen.
- Zuhörer : Kann zu einem Job mit Event -Hörern oder allen Jobs im Scheduler hinzugefügt werden, um auf Jobereignisse zuzuhören und Aktionen auszulösen.
Optionen
Viele Stellen- und Scheduler -Optionen sind verfügbar.
- Joboptionen : Joboptionen können festgelegt werden, wenn Sie einen Job mit
NewJob erstellen. - Globale Joboptionen : Globale Joboptionen können beim Erstellen eines Schedulers mit
NewScheduler und der Option WithGlobalJobOptions erstellen. - Scheduler -Optionen : Scheduler -Optionen können beim Erstellen eines Schedulers mit
NewScheduler festgelegt werden.
Protokollierung
Protokolle können aktiviert werden.
- Logger: Die Logger -Schnittstelle kann mit Ihrer gewünschten Protokollierungsbibliothek implementiert werden. Der bereitgestellte Newlogger verwendet das Protokollpaket der Standardbibliothek.
Metriken
Metriken können aus der Ausführung jedes Jobs erfasst werden.
- Überwachung :
- MonitorStatus (beinhaltet Status und Fehler (falls vorhanden) des Auftrags) Ein Monitor kann verwendet werden, um Metriken für jeden Job von einem Scheduler zu sammeln.
- Implementierungen: Go-Co-OP-Monitore (sehen Sie nicht, was Sie brauchen? Anfrage zu Slack, um ein Repo zu erstellen, um es beizutragen!)
Testen
Die Gocron -Bibliothek ist eingerichtet, um Tests zu ermöglichen.
- Mocks werden im Scheinpaket mit Gomock bereitgestellt.
- Die Zeit kann verspottet werden, indem Sie in einem FakeClock mit dem Clock übergeben werden - siehe das Beispiel mit Clock.
Unterstützer
Wir schätzen die Unterstützung für kostenlose und Open -Source -Software!
Dieses Projekt wird unterstützt von:
Jetbrains
Posten
Sterngeschichte