Znalazłem tylko puf (moduł pobierania równoległego adresu URL), ale nie mogłem zmusić go do odczytania adresów URL z pliku; coś jak
puf < urls.txt
też nie działa.
System operacyjny zainstalowany na serwerze to Ubuntu.
Znalazłem tylko puf (moduł pobierania równoległego adresu URL), ale nie mogłem zmusić go do odczytania adresów URL z pliku; coś jak
puf < urls.txt
też nie działa.
System operacyjny zainstalowany na serwerze to Ubuntu.
Odpowiedzi:
Używając GNU Parallel ,
$ parallel -j $ {jobs} wget <urls.txt
lub xargs
z GNU Findutils ,
$ xargs -n 1 -P $ {jobs} wget <urls.txt
gdzie ${jobs}
jest maksymalna ilość wget
chcesz, aby uruchomić jednocześnie (ustawienie -n
aby 1
dostać jedną wget
inwokację w każdym wierszu urls.txt
). Bez -j
/ -P
, parallel
będzie uruchamiać tyle zadań jednocześnie, ile rdzeni procesora (co niekoniecznie ma sens w przypadku wget
ograniczenia przez sieciowe operacje we / wy) i xargs
będzie uruchamiane jedno po drugim.
Jedną z fajnych funkcji, która parallel
ma już za sobą, xargs
jest oddzielenie wyników równolegle uruchomionych zadań, ale jeśli nie przejmujesz się tym, xargs
istnieje większe prawdopodobieństwo, że zostaną wstępnie zainstalowane.
jobs
zależy od wielu czynników: opóźnienia ścieżki, przepustowości ścieżki, zasad serwera zdalnego itp.
robi to aria2.
http://sourceforge.net/apps/trac/aria2/wiki/UsageExample#Downloadfileslistedinafileconcurrently
Przykład: aria2c http://example.org/mylinux.iso
Możesz to zaimplementować za pomocą Pythona i biblioteki pycurl. Biblioteka pycurl ma interfejs „multi”, który implementuje własną parzystą pętlę, która umożliwia wiele jednoczesnych połączeń.
Jednak interfejs jest raczej podobny do C, a zatem nieco nieporęczny w porównaniu z innym, bardziej „Pythonowym” kodem.
Napisałem dla niego opakowanie, które tworzy na nim bardziej kompletnego klienta podobnego do przeglądarki. Możesz użyć tego jako przykładu. Zobacz moduł pycopia.WWW.client . HTTPConnectionManager otacza interfejs wielofunkcyjny.
Część strony podręcznika GNU Parallel zawiera przykład równoległego rekurencyjnego wgeta.
https://www.gnu.org/software/parallel/man.html#EXAMPLE:-Breadth-first-parallel-web-crawler-mirrorer
HTML jest pobierany dwukrotnie: raz w celu wyodrębnienia linków i raz w celu pobrania na dysk. Inne treści są pobierane tylko raz.
Jeśli nie potrzebujesz rekurencyjności, odpowiedź efemerii wydaje się oczywista.
Ofiary twojego pobierania równoległego nie będą rozbawione: oczekują, że jedno połączenie będzie obsługiwać każdego klienta, a skonfigurowanie kilku połączeń oznacza ogólnie mniej klientów. (Tj. Jest to uważane za niegrzeczne zachowanie).