Avatar ·

Comment exécuter des tâches répétitives à intervalle régulier en Go ?

Bonjour à tous ! Je suis débutant en Go et j'écris un petit service de monitoring. J'ai besoin que toutes les 5 secondes, le programme vérifie le statut d'un serveur distant et enregistre le résultat dans un log. J'ai essayé d'utiliser `time.Sleep()` dans une boucle infinie, mais cela semble bricolé et bloque apparemment tout le programme de manière incorrecte. Voici mon code actuel : ```go package main import ( "fmt" "time" ) func main() { for { fmt.Println("Je vérifie le serveur...") // ici une logique de vérification time.Sleep(5 * time.Second) } } ``` Le problème est que si je veux arrêter cette boucle (par exemple, avec un signal d'arrêt du programme), je dois attendre la fin du `Sleep`. De plus, j'ai entendu dire qu'en Go il y a des goroutines et des channels, mais je ne comprends pas comment les appliquer à cette tâche. Pouvez-vous me dire s'il existe en Go une manière standard d'effectuer des actions répétitives à intervalles réguliers ? Idéalement avec la possibilité d'un graceful shutdown. Je serais reconnaissant pour des exemples de code.