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 xargsz GNU Findutils ,
$ xargs -n 1 -P $ {jobs} wget <urls.txt
gdzie ${jobs}jest maksymalna ilość wgetchcesz, aby uruchomić jednocześnie (ustawienie -naby 1dostać jedną wgetinwokację w każdym wierszu urls.txt). Bez -j/ -P, parallelbędzie uruchamiać tyle zadań jednocześnie, ile rdzeni procesora (co niekoniecznie ma sens w przypadku wgetograniczenia przez sieciowe operacje we / wy) i xargsbędzie uruchamiane jedno po drugim.
Jedną z fajnych funkcji, która parallelma już za sobą, xargsjest oddzielenie wyników równolegle uruchomionych zadań, ale jeśli nie przejmujesz się tym, xargsistnieje większe prawdopodobieństwo, że zostaną wstępnie zainstalowane.
jobszależ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).