Я знайшов лише 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 завантажується двічі: один раз для вилучення посилань та один раз для завантаження на диск. Інший вміст завантажується лише один раз.
Якщо вам не потрібна відповідь прорекурсивності, ефеміент здається очевидним.
Жертвам завантаження паралельних програм не буде забавно: вони очікують, що одне з'єднання обслуговуватиме кожного клієнта, а налаштування кількох з'єднань означає менше клієнтів. (Тобто це вважається грубою поведінкою).