Menu
Coddy logo textTech

Тайм-ауты и повторные попытки

Урок 45 из 47 курса Сетевое взаимодействие в терминале на Coddy.

По умолчанию curl ждёт очень долго. В скрипте это ошибка: один недоступный хост — и ваша задача зависает, пока кто-нибудь это не заметит.

curl -s --max-time 5 --connect-timeout 2 URL

--connect-timeout ограничивает время, отведённое на установление соединения. --max-time ограничивает длительность всей операции. При превышении любого из этих ограничений возвращается код выхода 28.

Повторная попытка требует большей осторожности, чем кажется. Повторять неудачный GET или PUT безопасно, поскольку оба метода идемпотентны. Повторение POST может создать вторую запись, и тайм-аут в этом случае — худший сценарий: вы так и не узнаете, была ли обработана первая попытка.

Поэтому чтение можно свободно повторять, а перед повторением операций записи стоит подумать. Когда это необходимо, запросите у сервера способ сделать операцию безопасной, например ключ идемпотентности.

challenge icon

Задание

Средне

Установите ограничение для запроса, на который никогда не будет получен ответ.

Отправьте запрос к http://10.255.255.1/ — адресу, который молча поглощает трафик, прекратите попытки через 2 секунды и выведите gave up: , за которым следует код завершения curl.

Ожидаемый вывод:

gave up: 28

Без тайм-аута этот запрос завис бы более чем на минуту.

Попробуйте сами

Терминал
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Сетевое взаимодействие в терминале

Потренируйтесь самостоятельно: Песочница Terminal