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