Я нашел только puf (Parallel URL fetcher), но не смог заставить его читать URL из файла; что-то вроде
puf < urls.txt
тоже не работает.
На сервере установлена операционная система Ubuntu.
Я нашел только puf (Parallel URL fetcher), но не смог заставить его читать URL из файла; что-то вроде
puf < urls.txt
тоже не работает.
На сервере установлена операционная система Ubuntu.
Ответы:
Используя GNU Parallel ,
$ parallel -j $ {jobs} wget <urls.txt
или xargs
из GNU Findutils ,
$ xargs -n 1 -P $ {jobs} wget <urls.txt
где ${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 оборачивает мультиинтерфейс.
Часть справочной страницы GNU Parallel содержит пример параллельного рекурсивного wget.
https://www.gnu.org/software/parallel/man.html#EXAMPLE:-Breadth-first-parallel-web-crawler-mirrorer
HTML загружается дважды: один раз для извлечения ссылок и один раз для загрузки на диск. Другой контент загружается только один раз.
Если вам не нужна рекурсивность, ответ эфиментности кажется очевидным.
Жертвам вашей параллельной загрузки не придется удивляться: они ожидают, что одно соединение будет обслуживать каждого клиента, а установка нескольких соединений означает меньше клиентов в целом. (То есть это считается грубым поведением).