0Pricing
Go Academy · Leçon

La bibliothèque robfig/cron

Planifier avec la syntaxe cron

La bibliothèque robfig/cron est une leçon Go Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Go Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Go Academy comprend 4 leçons au total.

Expressions Cron en Go

La bibliothèque robfig/cron vous permet de planifier des tâches avec la syntaxe Cron habituelle au lieu d'écrire vous-même les calculs horaires. Installez-la avec go get github.com/robfig/cron/v3.

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

Rappel de la syntaxe Cron

Une expression Cron standard comporte cinq champs :

  • minute (0-59)
  • heure (0-23)
  • jour du mois (1-31)
  • mois (1-12)
  • jour de la semaine (0-6)

Exemple : 0 9 * * 1-5 = 9:00 AM les jours ouvrés.

Créer un planificateur

cron.New() renvoie un planificateur. Vous ajoutez des tâches, puis vous le démarrez.

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

Ajouter une tâche

AddFunc enregistre une fonction à exécuter selon un calendrier et renvoie un ID d'entrée ainsi qu'une erreur si la spécification n'est pas valide.

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

Le champ des secondes

robfig/cron v3 utilise par défaut une spécification à 5 champs, sans secondes. Pour activer une spécification à 6 champs avec les secondes, construisez Cron avec l'option des secondes.

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

Planifications prédéfinies

Des raccourcis pratiques existent :

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

Supprimer des tâches

Utilisez le EntryID renvoyé pour supprimer une tâche dynamiquement.

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

Les tâches s'exécutent dans des gouroutines

Chaque tâche planifiée s'exécute dans sa propre gouroutine. Si une tâche peut chevaucher son prochain déclenchement, gérez la concurrence ou utilisez une fonction enveloppe qui ignore les exécutions qui se chevauchent.

Fuseaux horaires

Par défaut, les planifications utilisent l'heure locale de la machine. Transmettez un emplacement pour les rendre explicites et éviter les surprises liées à DST.

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

Analyser sans exécuter

Vous pouvez valider une spécification ou calculer la prochaine exécution avec un analyseur, ce qui est idéal pour les tests et pour afficher aux utilisateurs la prochaine exécution.

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

Exécutable : calculer la prochaine exécution cron (analogie)

robfig/cron est externe ; cet extrait utilisant la bibliothèque standard modélise la règle cron la plus simple, « toutes les minutes à la limite d'une minute », en calculant la prochaine heure correspondante.

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

Vérification rapide

Vérifiez votre compréhension de la bibliothèque robfig/cron.

Récapitulatif

Vous avez découvert la bibliothèque robfig/cron :

  • cron.New() + AddFunc(spec, fn) + Start()
  • Une spécification à 5 champs par défaut ; WithSeconds ajoute un champ pour les secondes
  • Des raccourcis comme @daily et @every simplifient les planifications courantes
  • Utilisez Remove, les emplacements et ParseStandard pour garder le contrôle et effectuer des tests

Questions Fréquemment Posées

La leçon « La bibliothèque robfig/cron » est-elle gratuite ?

Oui — le texte complet de « La bibliothèque robfig/cron » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Go Academy, passe à CoddyKit PRO. Le cours Go Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « La bibliothèque robfig/cron » ?

Planifier avec la syntaxe cron Tu pratiques Go Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Go Academy ?

Aucune expérience préalable n'est requise. Go Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « La bibliothèque robfig/cron » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Go Academy ?

Oui. Chaque leçon Go Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Planification temporelle
  2. La bibliothèque robfig/cron
  3. Tickers pour les intervalles
  4. Arrêt progressif des tâches
← Retour à Go Academy