Как обработать отмену контекста и таймауты при чтении задач и выполнении HTTP-запросов?

Отмену нужно передавать через всю цепочку: ожидание задачи, выполнение запроса и чтение ответа. Таймаут одной операции не должен оставлять фоновые операции работающими бесконечно.

Короткий ответ

Что ответить на собеседовании

Отмену нужно передавать через всю цепочку: ожидание задачи, выполнение запроса и чтение ответа. Таймаут одной операции не должен оставлять фоновые операции работающими бесконечно.

Подробный разбор

Ответ с пояснениями

Отмену нужно передавать через всю цепочку: ожидание задачи, выполнение запроса и чтение ответа. Таймаут одной операции не должен оставлять фоновые операции работающими бесконечно.

Для Go чтение канала оформляют select с ctx.Done(), а HTTP-запрос создают через NewRequestWithContext. Для дочернего context.WithTimeout обязательно вызывают cancel и закрывают response.Body. Ошибки отмены отличают от сетевых сбоев; повтор не запускают после отмены общего контекста.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее