Проверка сайтов с воркерами Go — практический проект для изучающих Go, готовых координировать параллельную работу. Помогите организатору мероприятия проверить подготовленные локальные веб-страницы перед открытием. Создайте многоразовую команду, которая выполняет настоящие HTTP-запросы и сохраняет ровно один достоверный результат JSON для каждой задачи, включая отдельные задачи с одинаковым URL.
Две пошаговые лабораторные работы сначала создают полноценную проверку одной цели, затем распределяют задачи между небольшим пулом воркеров. Одно самостоятельное задание проверяет другой маршрут мероприятия с верхним пределом в три воркера. Каждая часть начинается с собственной среды и данных. Планируйте примерно 155 минут: это оценка автора с учётом чтения и обычных исправлений.
Чему вы научитесь
После завершения курса вы сможете:
- сохранять ID и исходный URL каждой задачи, выдавая ровно один результат даже при сбое другой задачи;
- различать отказ HTTP, неожиданное содержимое, ошибки соединения и тайм-ауты, включая сбои при чтении тела ответа;
- задавать конечный клиентский тайм-аут для HTTP-запросов и закрывать полученные тела ответов;
- распределять задачи с помощью горутин и каналов, объяснять ответственность за закрытие каналов и ждать воркеров через
sync.WaitGroup; - собирать результаты без одновременной записи в общую коллекцию и наблюдать реальные перекрывающиеся запросы в пределах лимита воркеров;
- сохранять и изучать полный отчёт JSON, допускать разный порядок завершения и обрабатывать пустой ввод или меньше задач, чем воркеров.
Для кого этот курс
Курс предназначен для изучающих Go, которые хотят объединить знакомые функции и структуры данных в полезную параллельную утилиту командной строки.
Предварительные требования: Базовая навигация в терминале, функции, структуры, срезы, модули и базовый синтаксис каналов Go, а также курс Создание API бюро находок или равноценный опыт с HTTP. Горутины, ответственность за закрытие каналов, sync.WaitGroup, тайм-ауты клиента и освобождение тел ответов объясняются до использования.
Учебная среда: LabEx предоставляет Go, начальный код, контролируемые локальные HTTP-цели и WebIDE в браузере. В терминале Workspace вы запускаете проверку и читаете отчёт JSON без локальной установки Go. Команды, содержимое целей и вывод программы остаются на английском.
Часто задаваемые вопросы
Буду ли я сканировать публичные сайты?
Вы проверяете только подготовленные локальные цели с конечными задержками. Это инструмент разовой проверки; непрерывный мониторинг, оповещения и гарантии для произвольных условий Интернета не входят в проект.
Останавливает ли сбой одной цели остальные проверки?
Каждая входная задача должна получить собственный результат. Отказ HTTP со стороны сервера отличается от ошибки соединения. По истечении настроенного тайм-аута клиент прекращает ждать медленный ответ; целевой сервер может завершить обработку позже. Если ответ получен, отчёт сохраняет его HTTP-статус.
Что меняется в самостоятельном задании?
Меняются ID задач, URL и ожидаемое содержимое, а лимит становится равным трём воркерам. Вы повторно используете изученные механизмы. Результаты могут приходить в любом порядке; полнота покрытия задач и ограничение параллельности остаются обязательными.

