cURL – это отличный инструмент для сетевых коммуникаций, он расшифровывается как “client URL”.
Практически каждое устройство на земном шаре, подключающееся к Интернету, использует cURL.
Самое широкое применение cURL – это загрузка файлов с удаленного сервера в терминал.
Начальным этапом подключения к серверу для любого вида связи является ожидание ответа.
Задержка может произойти по целому ряду причин, некоторые из них – нагрузка на сервер, пропускная способность сети, задержка и т.д.
Если задержка больше, чем вы хотели бы ждать, вы можете указать длительность “тайм-аута”.
Лучший способ добиться этого – использовать параметр –connect-timeout.
curl --connect-timeout <duration> <URL>
Используйте опцию ‘–connect-timeout’
У cURL есть дополнительный флаг ‘–connect-timeout’, где вы можете указать продолжительность в секундах.
Если у вас версия cURL 7.32.0 или более поздняя, вы также можете указать продолжительность в десятичных значениях.
Указанное вами значение будет задавать максимальную продолжительность оaжидания ответа от удаленного сервера.
Ниже приведен пример использования флага ‘–connect-timeout’:
curl --connect-timeout 4.2 https://itsecforu.ru
Использование ‘4.2’ вместе с флагом ‘–connect-timeout’ означает, что cURL попытается соединиться с ‘itsecforu.ru’, и если это займет более 4,2 секунды, соединениcе будет прервано.
Альтернатива, опция ‘–max-time’
Флаг ‘–max-time’ используется, когда вы выполняете несколько операций в пакете.
Этот флаг устанавливает продолжительность всей операции – например, загрузки большого файла.
Если операция, например, загрузка файла, займет больше указанного времени, операция будет прервана.
$ curl --max-time 20 https://github.com/aristocratos/btop/releases/download/v1.2.3/btop-aarch64-linux-musl.tbz
В данном примере использования cURL будет загружен файл.
Когда общее время “подключения к серверу” + “время загрузки файла” превысит 20 секунд, которые мы указали здесь, загрузка будет прекращена.
В данном случае размер файла слишком мал, чтобы загрузка заняла более 20 секунд, поэтому команда будет выполнена успешно.
Заключение
В этой статье мы рассмотрели, как можно установить максимальную продолжительность (таймаут) либо для времени подключения к удаленному серверу, либо для таймаута всей работы сети.
см.также: