0Pricing
Go Academy · Lekcja

Biblioteka robfig/cron

Planuj zadania za pomocą składni cron

Biblioteka robfig/cron to bezpłatna lekcja Go Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Go Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Go Academy zawiera 4 lekcji w sumie.

Wyrażenia cron w języku Go

Biblioteka robfig/cron pozwala planować zadania za pomocą znanej składni cron zamiast ręcznego obliczania czasu. Należy ją zainstalować poleceniem go get github.com/robfig/cron/v3.

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

Powtórzenie składni cron

Standardowe wyrażenie cron ma pięć pól:

  • minuta (0-59)
  • godzina (0-23)
  • dzień miesiąca (1-31)
  • miesiąc (1-12)
  • dzień tygodnia (0-6)

Przykład: 0 9 * * 1-5 = 9:00 rano w dni robocze.

Tworzenie harmonogramatora

cron.New() zwraca harmonogramator. Następnie należy dodać zadania i go uruchomić.

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

Dodawanie zadania

AddFunc rejestruje funkcję, która ma być uruchamiana zgodnie z harmonogramem, zwracając identyfikator wpisu oraz błąd, jeśli specyfikacja jest nieprawidłowa.

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

Pole sekund

robfig/cron v3 domyślnie używa specyfikacji pięciopolowej (bez sekund). Aby włączyć specyfikację sześcio­polową z sekundami, należy utworzyć cron z opcją sekund.

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

Wstępnie zdefiniowane harmonogramy

Dostępne są wygodne makra:

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

Usuwanie zadań

Do dynamicznego usunięcia zadania należy użyć zwróconego identyfikatora EntryID.

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

Zadania są uruchamiane w goroutines

Każde zaplanowane zadanie jest uruchamiane we własnej goroutine. Jeśli zadanie może nakładać się na swoje kolejne uruchomienie, należy zabezpieczyć je przed współbieżnością albo użyć wrappera pomijającego nakładające się uruchomienia.

Strefy czasowe

Domyślnie harmonogramy korzystają z lokalnego czasu komputera. Należy przekazać lokalizację, aby określić ją jawnie i uniknąć niespodzianek związanych ze zmianą czasu.

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

Parsowanie bez uruchamiania

Za pomocą parsera można zweryfikować specyfikację albo obliczyć następne uruchomienie, co świetnie sprawdza się w testach i przy pokazywaniu użytkownikom kolejnego wykonania.

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

Program do uruchomienia: obliczanie następnego uruchomienia crona (analogia)

robfig/cron jest biblioteką zewnętrzną; ten fragment korzystający wyłącznie ze standardowej biblioteki modeluje najprostszą regułę crona — „co minutę na początku minuty” — obliczając następny pasujący czas.

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"))
}

Szybkie sprawdzenie

Proszę sprawdzić zrozumienie biblioteki robfig/cron.

Podsumowanie

Opanowano korzystanie z biblioteki robfig/cron:

  • cron.New() + AddFunc(spec, fn) + Start()
  • Domyślnie specyfikacja ma 5 pól; WithSeconds dodaje pole sekund
  • Makra takie jak @daily i @every upraszczają popularne harmonogramy
  • Do sterowania i testowania służą Remove, lokalizacje oraz ParseStandard

Często zadawane pytania

Czy lekcja „Biblioteka robfig/cron” jest bezpłatna?

Tak — pełny tekst „Biblioteka robfig/cron” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Go Academy, przejdź na CoddyKit PRO. Kurs Go Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Biblioteka robfig/cron”?

Planuj zadania za pomocą składni cron Ćwiczysz Go Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Go Academy?

Nie wymagamy żadnego doświadczenia. Go Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Biblioteka robfig/cron”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Go Academy?

Tak. Każda lekcja Go Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Planowanie oparte na czasie
  2. Biblioteka robfig/cron
  3. Tickery do obsługi interwałów
  4. Kontrolowane zatrzymywanie zadań
← Powrót do Go Academy