проект в Golang Skill Tree

Корректная остановка сервера Go

Настройте HTTP-сервер Go так, чтобы он отклонял новые соединения, завершал отправку принятых документов, а исходный процесс штатно завершался.

ПроектGolang

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

Корректная остановка сервера Go — практический проект о закрытии сервиса загрузки без отказа от уже выполняемой работы. Сначала полностью загрузите текстовый документ, затем наблюдайте, как немедленная остановка прерывает принятую передачу, и реализуйте координацию завершения: новые соединения отклоняются, а текущие загрузки завершаются из исходного процесса сервера.

Две пошаговые лабораторные работы связывают реальные результаты клиента с идентичностью процесса, доставкой сигнала, завершением HTTP и обязанностью main дождаться остановки. Одно самостоятельное задание применяет те же механизмы к двум принятым передачам разных документов. Каждая часть предоставляет собственную среду и материалы. Планируйте примерно 150 минут: это оценка автора с учётом чтения и обычных исправлений.

Чему вы научитесь

После завершения курса вы сможете:

  • сравнивать пригодную к использованию полную загрузку с прерванной передачей по реальным байтам документов;
  • определять исходный скомпилированный процесс Go курса и точно отправлять SIGTERM именно ему;
  • устанавливать факт принятия запросов до остановки и наблюдать отказ новых соединений, пока текущая работа продолжается;
  • использовать http.Server.Shutdown с конечным сроком контекста для завершения обычных активных HTTP-запросов;
  • отличать http.ErrServerClosed от настоящих ошибок сервера и удерживать main до завершения остановки;
  • сохранять один или два полностью загруженных документа, проверять результаты исходных клиентов и сервера и беречь предоставленные файлы и наблюдения.

Для кого этот курс

Курс предназначен для изучающих Go, готовых координировать жизненный цикл небольшого HTTP-сервиса и его активных запросов.

Предварительные требования: Базовая навигация в терминале, обработчики и значения ошибок Go из курса Создание API бюро находок, а также горутины и каналы из курса Проверка сайтов с воркерами Go или равноценный опыт. ID процессов, сигналы, конечные контексты и ожидание завершения в main объясняются до использования.

Учебная среда: LabEx предоставляет Go, начальный код жизненного цикла, подготовленный HTTP-обработчик, два настоящих текстовых документа и средства наблюдения в среде терминалов в браузере. Терминалы Server и Downloads на одной машине позволяют запускать сервис и его клиентов без локальной установки Go. Команды, подписи и вывод программы остаются на английском.

Часто задаваемые вопросы

Нужно ли заранее знать сигналы операционной системы?

Нет. Лабораторные работы знакомят с идентификацией процесса и SIGTERM до остановки собственного сервера курса. Подготовленные наблюдатели помогают определить принятые запросы и исходные результаты процессов; изучать внутренний формат трассировки не требуется.

Завершает ли вызов Shutdown всё автоматически?

Main должен дождаться завершения остановки. Ошибка истечения срока не доказывает, что активная работа закончилась. Обработка на сервере может завершиться раньше, чем клиент закончит чтение или запись буферизованных данных в скачиваемый файл. Поэтому проверяются оба результата без предположений о порядке сообщений терминалов.

Что меняется в самостоятельном задании?

В момент остановки исходного сервера должны уже передаваться два разных документа. Обе загрузки должны сохранить точные байты, новые соединения должны отклоняться во время активной работы, а тот же сервер должен нормально завершиться. Проект охватывает обычный HTTP; WebSockets, распределённое переключение трафика и гарантии работы без простоя в промышленной среде в него не входят.

Преподаватель

labby
Labby
Labby is the LabEx teacher.

Рекомендовано для вас

no data