Я нашел только puf (Parallel URL fetcher), но не смог заставить его читать URL из файла; что-то вроде
puf < urls.txt
тоже не работает.
На сервере установлена операционная система Ubuntu.
ubuntu
wget
parallelism
Луноход
источник
источник
Ответы:
Используя GNU Parallel ,
или
xargs
из GNU Findutils ,где
${jobs}
находится максимальное количествоwget
вы хотите , чтобы запустить одновременно (установка-n
для1
получить одинwget
вызов в каждой строке вurls.txt
). Без-j
/-P
,parallel
будет одновременно запускать столько же заданий, сколько и ядра ЦП (что не обязательно имеет смысл дляwget
сетевого ввода-вывода), иxargs
будет запускаться по одному за раз.Одной из приятных особенностей, которая
parallel
имеет преимуществоxargs
,xargs
является разделение выходных данных одновременно выполняемых заданий, но если вам это не важно, скорее всего, они предустановлены.источник
jobs
зависит от многих факторов: задержка пути, пропускная способность пути, политики удаленного сервера и т. Д.aria2 делает это.
http://sourceforge.net/apps/trac/aria2/wiki/UsageExample#Downloadfileslistedinafileconcurrently
Пример: aria2c http://example.org/mylinux.iso
источник
Вы можете реализовать это, используя Python и библиотеку pycurl. Библиотека pycurl имеет «многопользовательский» интерфейс, который реализует свой собственный цикл «четность», который обеспечивает несколько одновременных подключений.
Однако интерфейс довольно C-подобен и, следовательно, немного громоздок по сравнению с другим, более "Pythonic", кодом.
Я написал для него оболочку, которая создает поверх него более полный браузероподобный клиент. Вы можете использовать это в качестве примера. См. Модуль pycopia.WWW.client . HTTPConnectionManager оборачивает мультиинтерфейс.
источник
Это работает, и не будет локальной или удаленной DoS с правильными настройками:
источник
Часть справочной страницы GNU Parallel содержит пример параллельного рекурсивного wget.
https://www.gnu.org/software/parallel/man.html#EXAMPLE:-Breadth-first-parallel-web-crawler-mirrorer
HTML загружается дважды: один раз для извлечения ссылок и один раз для загрузки на диск. Другой контент загружается только один раз.
Если вам не нужна рекурсивность, ответ эфиментности кажется очевидным.
источник
Жертвам вашей параллельной загрузки не придется удивляться: они ожидают, что одно соединение будет обслуживать каждого клиента, а установка нескольких соединений означает меньше клиентов в целом. (То есть это считается грубым поведением).
источник