projet dans Golang Skill Tree

Arrêter un serveur Go proprement

Coordonnez un serveur HTTP Go pour refuser les nouvelles connexions, finir l’envoi des documents acceptés puis quitter le processus d’origine.

ProjetGolang

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Arrêter un serveur Go proprement est un projet pratique consacré à la fermeture d’un service de téléchargement sans abandonner le travail en cours. Commencez par télécharger intégralement un document texte, observez comment un arrêt immédiat interrompt un transfert accepté, puis coordonnez l’arrêt pour refuser les nouvelles connexions tout en laissant les téléchargements existants se terminer depuis le processus serveur d’origine.

Deux laboratoires guidés relient les résultats réels du client à l’identité du processus, à la transmission des signaux, à l’arrêt HTTP et à la responsabilité d’attente de main. Un défi indépendant applique les mêmes mécanismes à deux transferts acceptés de documents différents. Chaque unité fournit son propre environnement et ses documents. Prévoyez environ 150 minutes, une estimation de l’auteur comprenant la lecture et les corrections courantes.

Ce que vous apprendrez

À la fin du cours, vous saurez :

  • comparer un téléchargement complet et utilisable à un transfert interrompu à partir des véritables octets des documents ;
  • identifier le processus Go compilé d’origine du cours et lui envoyer précisément SIGTERM ;
  • établir que les requêtes ont été acceptées avant l’arrêt et observer le refus des nouvelles connexions pendant la poursuite du travail existant ;
  • utiliser http.Server.Shutdown avec un délai de contexte fini pour laisser les requêtes HTTP ordinaires actives se terminer ;
  • distinguer http.ErrServerClosed des véritables erreurs du serveur et maintenir main en attente jusqu’à la fin de l’arrêt ;
  • conserver un ou deux documents téléchargés complets, vérifier les résultats des clients et du serveur d’origine et préserver les fichiers et observations fournis.

À qui s’adresse ce cours

Ce cours s’adresse aux personnes qui apprennent Go et sont prêtes à coordonner la durée de vie d’un petit service HTTP et de ses requêtes actives.

Prérequis : Navigation élémentaire dans le terminal, gestionnaires Go et valeurs d’erreur de Créer une API d’objets trouvés, ainsi que goroutines et canaux de Vérifier des sites web avec des workers Go, ou expérience équivalente. Les IDs de processus, les signaux, les contextes finis et l’attente de main pendant l’arrêt sont expliqués avant leur utilisation.

Environnement d’apprentissage : LabEx fournit Go, le code initial du cycle de vie, un gestionnaire HTTP préparé, deux véritables documents texte et des outils d’observation dans un environnement de terminaux accessible par navigateur. Utilisez les terminaux Server et Downloads sur la même machine pour exécuter le service et ses clients sans installer Go localement. Les commandes, les libellés et les sorties du programme restent en anglais.

Questions fréquentes

Dois-je déjà connaître les signaux du système d’exploitation ?

Non. Les laboratoires présentent l’identité des processus et SIGTERM avant de vous demander d’arrêter le serveur du cours. Les observateurs préparés aident à identifier les requêtes acceptées et les résultats natifs des processus ; il n’est pas nécessaire d’apprendre leur format de trace interne.

Un appel à Shutdown termine-t-il tout automatiquement ?

Main doit attendre la fin de l’arrêt. Une erreur de dépassement du délai ne prouve pas que le travail actif est terminé. Le traitement côté serveur peut finir avant qu’un client termine la lecture ou l’écriture de ses données tamponnées dans le fichier téléchargé. Vous examinez donc les deux résultats sans imposer d’ordre aux messages des terminaux.

Qu’est-ce qui change dans le défi ?

Deux documents différents doivent être en cours de transfert lorsque vous arrêtez le serveur d’origine. Les deux téléchargements doivent conserver leurs octets exacts, les nouvelles connexions doivent être refusées pendant le travail actif et ce même serveur doit se terminer normalement. Le périmètre couvre HTTP ordinaire ; WebSockets, bascule de trafic distribué et garanties de production sans interruption sont hors du projet.

Enseignant

labby
Labby
Labby is the LabEx teacher.

Recommandé pour vous

no data