proyecto en Golang Skill Tree

Detener un servidor Go de forma ordenada

Coordina un servidor HTTP de Go para rechazar conexiones nuevas, terminar de enviar documentos aceptados y salir desde el proceso original.

ProyectoGolang

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

Detener un servidor Go de forma ordenada es un proyecto práctico sobre cómo cerrar un servicio de descargas sin abandonar el trabajo en curso. Comienza con la descarga completa de un documento de texto, observa cómo una parada inmediata interrumpe una transferencia aceptada e implementa una coordinación que rechace conexiones nuevas mientras las descargas existentes terminan desde el proceso servidor original.

Dos laboratorios guiados relacionan los resultados reales del cliente con la identidad del proceso, la entrega de señales, el cierre HTTP y la responsabilidad de espera de main. Un desafío independiente aplica los mismos mecanismos a dos transferencias aceptadas de documentos diferentes. Cada unidad proporciona su propio entorno y materiales. Calcula unos 150 minutos, una estimación del autor que incluye lectura y correcciones habituales.

Lo que aprenderás

Al completar el curso, podrás:

  • comparar una descarga completa y útil con una transferencia interrumpida mediante los bytes reales de los documentos;
  • identificar el proceso Go compilado original del curso y enviarle un SIGTERM preciso;
  • establecer que las solicitudes fueron aceptadas antes de detener el servidor y observar el rechazo de conexiones nuevas mientras continúa el trabajo existente;
  • utilizar http.Server.Shutdown con un presupuesto de contexto finito para que terminen las solicitudes HTTP ordinarias activas;
  • distinguir http.ErrServerClosed de errores reales del servidor y mantener main esperando hasta completar el cierre;
  • conservar uno o dos documentos completos, comprobar los resultados de los clientes y el servidor originales y preservar los archivos y observaciones proporcionados.

A quién va dirigido este curso

Este curso está pensado para estudiantes de Go preparados para coordinar la vida de un pequeño servicio HTTP y sus solicitudes activas.

Requisitos previos: Navegación básica por la terminal, manejadores y valores de error de Go de Crear una API de objetos perdidos, además de goroutines y canales de Comprobar sitios web con workers de Go, o experiencia equivalente. Los IDs de proceso, las señales, los contextos finitos y la espera de cierre de main se explican antes de utilizarlos.

Entorno de aprendizaje: LabEx proporciona Go, código inicial de ciclo de vida, un manejador HTTP preparado, dos documentos de texto reales y herramientas de observación en un entorno de terminales en el navegador. Usa las terminales Server y Downloads de la misma máquina para ejecutar el servicio y sus clientes sin instalar Go localmente. Los comandos, las etiquetas y la salida del programa permanecen en inglés.

Preguntas frecuentes

¿Debo conocer ya las señales del sistema operativo?

No. Los laboratorios presentan la identidad del proceso y SIGTERM antes de pedirte que detengas el servidor del curso. Los observadores preparados ayudan a identificar las solicitudes aceptadas y los resultados nativos de los procesos; no necesitas aprender su formato interno de trazas.

¿Llamar a Shutdown lo termina todo automáticamente?

Main debe esperar a que termine el cierre. Un error por vencimiento del plazo no demuestra que el trabajo activo haya terminado. El procesamiento del servidor puede concluir antes de que un cliente termine de leer o vaciar sus búferes al archivo descargado, por lo que debes revisar ambos resultados sin suponer un orden entre los mensajes de las terminales.

¿Qué cambia en el desafío?

Dos documentos diferentes deben estar transfiriéndose cuando detengas el servidor original. Ambas descargas deben conservar sus bytes exactos, las conexiones nuevas deben rechazarse durante el trabajo activo y ese mismo servidor debe salir normalmente. El alcance es HTTP ordinario; WebSockets, cambio de tráfico distribuido y garantías de producción sin interrupciones quedan fuera del proyecto.

Profesor

labby
Labby
Labby is the LabEx teacher.

Recomendado Para Ti

no data