Я знайшов лише puf (паралельний вибор URL-адрес), але не зміг змусити його читати URL-адреси з файлу; щось на зразок
puf < urls.txt
теж не працює.
Встановлена на сервері операційна система - Ubuntu.
Я знайшов лише puf (паралельний вибор URL-адрес), але не зміг змусити його читати URL-адреси з файлу; щось на зразок
puf < urls.txt
теж не працює.
Встановлена на сервері операційна система - Ubuntu.
Відповіді:
Використовуючи паралель GNU ,
$ паралельна -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пов'язаної мережі IO), і 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 і тому трохи громіздкий порівняно з іншими, більш «пітонічними» кодами.
Я написав обгортку для цього, який будує більш повний клієнт, схожий на браузер. Ви можете використовувати це як приклад. Дивіться модуль pycopia.WWW.client . HTTPConnectionManager обгортає багатофункціональний інтерфейс.
Частина сторінки GNU Parallel містить приклад паралельного рекурсивного wget.
https://www.gnu.org/software/parallel/man.html#EXAMPLE:-Breadth-first-parallel-web-crawler-mirrorer
HTML завантажується двічі: один раз для вилучення посилань та один раз для завантаження на диск. Інший вміст завантажується лише один раз.
Якщо вам не потрібна відповідь прорекурсивності, ефеміент здається очевидним.
Жертвам завантаження паралельних програм не буде забавно: вони очікують, що одне з'єднання обслуговуватиме кожного клієнта, а налаштування кількох з'єднань означає менше клієнтів. (Тобто це вважається грубою поведінкою).