Перейти к содержанию

Практикум: Таймаут чтения и общий дедлайн

Сервер отправляет десять байт, по одному каждые 80 мс. Обычный HTTPX с read timeout 300 мс получает весь ответ: данные продолжают приходить. С общим лимитом clientwright в 350 мс чтение тела прерывается через DeadlineExceededError до получения полного ответа.

Вторая проверка сочетает таймауты чтения и повторы для медленного обработчика. Она проверяет один вызов и не больше трёх попыток. Если следующая попытка не помещается, итоговой ошибкой может остаться последний таймаут чтения: ждать истечения дедлайна не обязательно.

Используются настоящий HTTP и функции соседнего практикума с клиентами. При копировании сохраните этот каталог. Проверки времени допускают задержки планировщика; это не нагрузочный тест.

Запустите из каталога docs/blog/lab/2026-09-07-reliability-is-not-retry-3 в копии репозитория. Версии зависимостей закреплены в requirements.txt.

uv run --no-project --python 3.13 --with-requirements requirements.txt python reliability_lab.py

Исходный код практикума на GitHub.