С помощью параметра командной строки --connect-timeout можно установить тайм-аут для подключения к серверу, а с помощью параметра командной строки -m или --max-time - тайм-аут для общего времени запроса. Время ожидания указывается в секундах. Это время, в течение которого запрос должен быть обработан или отменен.
1 | curl --connect-timeout 5 https://example.com/echo |
В этом примере таймаута Curl мы устанавливаем таймаут для отправки запросов на адрес example.com.
Что такое Curl?
Curl - это инструмент командной строки с открытым исходным кодом и кроссплатформенная библиотека (libcurl) для передачи данных на сервер и с сервера. Curl поддерживает все популярные интернет-протоколы, включая HTTP и HTTPS. Разработчики используют Curl для тестирования API, автоматизации задач, а также для поддержки SSL-сертификатов и HTTP Cookies. Curl работает на всех современных платформах, таких как Windows, Linux и macOS.
Что такое тайм-аут?
Время ожидания называется таймаутом. Curl отправляет запросы через сетевое соединение. Первым шагом в получении ресурса с сервера является подключение к нему. Установление соединения с удаленным сервером может занять некоторое время, в зависимости от скорости сети, задержки в сети и загрузки сервера. Curl имеет стандартные таймауты для соединения и общего времени запроса, но мы можем задать свои таймауты для каждой команды Curl.
Как установить таймаут для команды Curl?
Чтобы установить таймаут для команды Curl, вы можете использовать параметр --connect-timeout для установки максимального времени в секундах, которое вы разрешаете Curl соединиться с сервером, или параметр --max-time (или -m) для общего времени в секундах, которое вы разрешаете для всей операции.
Что такое --connect-timeout и как его использовать?
Параметр -connect-timeout ограничивает количество времени, в течение которого Curl будет пытаться подключиться к удаленному хосту. Значение таймаута соединения указывается в секундах. Если Curl не сможет установить соединение в течение указанного интервала, команда завершится неудачей.
1 | curl --connect-timeout [SECONDS] [URL] |
Что такое -max-time и как его использовать?
Параметр -max-time (или -m) - это максимальное время в секундах, в течение которого вся операция должна быть завершена или отменена. Параметр --max-time может предотвратить зависание Curl при выполнении пакетных заданий в медленных сетях.
1 2 | curl --max-time [SECONDS] [URL] curl -m [SECONDS] [URL] |
Как установить таймаут соединения для Curl?
В следующем примере мы устанавливаем таймаут соединения для команды Curl при отправке запроса на адрес example.com:
1 | curl --connect-timeout 5 https://example.com/echo |
Как ограничить общее время выполнения команды Curl?
В следующем примере, чтобы ограничить общее время выполнения команды Curl десятью секундами, мы можем использовать параметр --max-time:
1 | curl --max-time 10 https://example.com/echo |
Как использовать оба таймаута в одном запросе?
В следующем примере мы используем оба таймаута в одной команде:
1 2 3 | curl https://example.com/echo --connect-timeout 5 --max-time 10 |
Вы можете использовать опции --speed-limit и --speed-time в качестве альтернативы таймауту
Вы можете использовать параметры командной строки --speed-time и -speed-limit в качестве альтернативы фиксированному таймауту. С помощью этих параметров вы можете указать Curl отменить передачу, если она падает ниже определенной скорости и остается ниже этого порога в течение определенного времени. Например, если скорость передачи упадет ниже 5000 байт в секунду в течение 15 секунд, Curl прекратит передачу:
1 2 3 | curl https://example.com/echo --speed-limit 5000 --speed-time 15 |
Что такое таймаут TCP?
TCP расшифровывается как Transmission Control Protocol (протокол управления передачей). Таймаут TCP keepalive определяет интервал, в течение которого TCP-соединение проверяет, работает ли канал Fiber Channel over IP (FCIP). Это гарантирует, что сбой соединения будет обнаружен быстро, даже если соединение неактивно. По умолчанию Curl включает поддержку TCP. TCP keepalive - это функция, которая заставляет стек TCP отправлять зонд на другую сторону при отсутствии трафика, чтобы убедиться, что она все еще существует и жива. Используйте параметр --keepalive-time, чтобы указать, как часто вы хотите отправлять зонд партнеру в целых секундах. По умолчанию это 60 секунд. Иногда это зондирование мешает вам, и вы можете легко отключить его с помощью --no-keepalive.
1 | curl --keepalive-time 180 https://example.com/echo |
1 | curl --no-keepalive https://reqbin.com/echo |