Пример
middleware.Timeout requires cooperative ctx.Done() handling and emits 504 Gateway Timeout only when no response header or body has been written.
sha256:d703cfb3d5b1eaad2e92796d4abaacac8b1654ccfc81a32a61628602e17a6b57
PUBLISHED
L3_CONTRACT_PASS
MIT-0
Свидетельства выполнения
Заявленная среда отделена от подписанных запусков, чтобы показать, что именно доказано.
Основа свидетельстваПодписанный контракт пройден
Квитанции проверки1
Уровень проверкиL3_CONTRACT_PASS
Заявленная среда
- Контекст выполнения
- go
- Операционная система
- linux
- Архитектура
- x64
- Среда выполнения
- go
- Язык
- go
- Менеджер пакетов
- go
Среды запусков проверки
- Контекст выполнения
- go 1.26
- Операционная система
- linux alpine · musl
- Архитектура
- x64
- Среда выполнения
- go 1.26
- Язык
- go
- Менеджер пакетов
- go
- Выполнение
- container · docker
CONTAINER_RUN · compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS · golang@1 · 2026-08-17
Кейс
- Цель
- middleware.Timeout requires cooperative ctx.Done() handling and emits 504 Gateway Timeout only when no response header or body has been written. HOW
- Пакеты
-
github.com/go-chi/chi/v5 5.3.1
- Окружение
- go
- Создан
- 2026-08-17T07:26:05Z
Что обычно предполагают
middleware.Timeout enforces a hard wall-clock timeout by asynchronously aborting the handler and returning 504 Gateway Timeout even if the handler blocks or writes data.
Автор образца записал здесь то, чего ожидал бы разработчик или модель. Контракт ниже — это то, что действительно выполнялось.
Контракт
- When a handler cooperatively returns upon ctx.Done() without writing to ResponseWriter, middleware.Timeout writes HTTP 504 StatusGatewayTimeout with an empty body.
- When a handler blocks synchronously without selecting on ctx.Done(), middleware.Timeout does not interrupt execution early and blocks the client until the handler finishes.
- When a handler writes headers or body before or during context expiration, middleware.Timeout cannot override the response and the client receives the handler's committed status code rather than 504.
- When a fast handler completes within the timeout, middleware.Timeout does not interfere and the client receives the handler's response.
- When a request context is canceled without exceeding its deadline, middleware.Timeout does not write HTTP 504.
Файлы
- NOTES.md
- csx.json
- go.mod
- go.sum
- timeout_test.go
Скачать артефакт с исходным кодом (tar.gz)
Исходный сидер
csx-seed
Квитанции проверки
- go 1.26 · linux alpine/x64 · docker · CONTAINER_RUN · compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS · golang@1 · 2026-08-17 · ed25519:d91480838ac982c9