Выполняйте параллельные запросы с помощью команды xargs
В xargs Команда - это команда в Linux и UNIX-подобных операционных системах, которая принимает или принимает аргументы из стандартного ввода, а затем запускает команду для каждого аргумента. Проще говоря, команда xargs может принимать вывод команды и обрабатывать его как аргумент другой команды.
Например, в приведенной ниже команде xargs принимает аргументы с левой стороны и создает каталоги, используя имена аргументов.
$ echo 'Африка Азия Европа Америка' | xargs mkdir
Команду xargs также можно использовать для одновременного выполнения нескольких запросов. Если вы проверите страницы руководства, вы найдете раздел, который дает вам аргументы командной строки, как указано ниже.
Используя xargs, мы попытаемся дать команду на выполнение нескольких запросов curl одновременно.
Команда Linux curl - это утилита командной строки, которая используется для передачи файлов. Он обеспечивает поддержку множества протоколов, таких как HTTP, HTTPS, FTP, FTPS, SCP, TFTP и многих других.
Предположим, вы хотите получить HTTP-заголовки веб-сайта с помощью команды curl. Для этого вам нужно будет вызвать команду curl с флагом -I, за которым следует URL-адрес, как показано.
$ curl -I "https: // linuxways.сеть"
Теперь вы только что отправили один запрос на завиток. Предположим, вы хотите выполнить 5 параллельных запросов; как бы ты это сделал? Чтобы решить эту проблему, используйте команду xargs, как показано рядом с командой curl.
$ xargs -I% -P 5 curl -I "https: // linuxways.сеть" < <(printf '%s\n' 1… 10)Флаг -P обозначает количество параллельных запросов. Секция <(printf '%s\n' 1… 10) выводит числа от 1 до 10 и вызывает выполнение команды curl 10 раз с 5 параллельными запросами.
Кроме того, вы можете запустить команду ниже, чтобы добиться того же результата. Как и в предыдущем примере, приведенная ниже команда выполняет команду curl 10 раз с 5 параллельными запросами.
$ seq 1 10 | xargs -n1 -P 5 curl -I "https: // linuxways.сеть"Возьмем другой пример. Предположим, вы хотите загрузить 3 файла одновременно с помощью команды curl. Первым шагом будет сохранение URL-адресов загружаемых файлов в текстовый файл. Здесь у нас есть загрузка текстового файла.txt со следующими URL-адресами.
Чтобы загрузить файлы одновременно, выполните следующую команду:
$ xargs -P 5 -n 1 завиток -O < download.txtКоманда скручивает каждую строку в текстовом файле 5 раз параллельно. В -п 1 flag гарантирует, что команда curl считывает одну строку при каждом выполнении команды curl.
И вот как вы выполняете несколько запросов curl параллельно.