РекомендуетсяGo

Go context

Запрос к БД или внешнему сервису должен завершаться при отмене родительской работы.

Проверено Изменено

Плохо

// В HTTP-обработчике: срок запроса потерян.
ctx := context.Background()
err := db.QueryRowContext(ctx, query, orderID).Scan(&title)
if err != nil { return err }

Хорошо

ctx, cancel := context.WithTimeout(r.Context(), 2*time.Second)
defer cancel()
err := db.QueryRowContext(ctx, query, orderID).Scan(&title)
if err != nil { return err }

Почему это важно

Зависшие операции занимают соединения и ресурсы.

Когда применять

Фрагмент функции, возвращающей error: db — *sql.DB, r — *http.Request, query — параметризованный SELECT одной строки. Две секунды — пример, а не норматив. В Go передавайте context явно; фоновая задача должна иметь собственного владельца и срок жизни.

Кто что делает

Человек

Задаёт бюджет времени запроса и правила отмены работы.

AI-агент

Реализует правило в коде сервиса и проверяет ошибку, отмену и граничные входные данные.

Контроль результата:

  • Отмените запрос и проверьте завершение зависимых операций.

Как проверить у себя

  • Отмените запрос и проверьте завершение зависимых операций.
ПервоисточникиИстория изменений на GitHub

Дата проверки отражает содержательную сверку. Синхронизация сайта не обновляет её автоматически.