Je n'ai trouvé que puf (récupérateur d'URL parallèle) mais je n'ai pas pu le faire lire les URL d'un fichier; quelque chose comme
puf < urls.txt
ne fonctionne pas non plus.
Le système d'exploitation installé sur le serveur est Ubuntu.
Je n'ai trouvé que puf (récupérateur d'URL parallèle) mais je n'ai pas pu le faire lire les URL d'un fichier; quelque chose comme
puf < urls.txt
ne fonctionne pas non plus.
Le système d'exploitation installé sur le serveur est Ubuntu.
Réponses:
En utilisant GNU Parallel ,
$ parallel -j $ {jobs} wget <urls.txt
ou xargs
de GNU Findutils ,
$ xargs -n 1 -P $ {jobs} wget <urls.txt
où ${jobs}
est le nombre maximum de wget
vous voulez permettre d'exécuter simultanément (mise -n
à 1
obtenir un wget
appel par ligne urls.txt
). Sans -j
/ -P
, parallel
exécutera autant de tâches à la fois que de cœurs de processeur (ce qui n'a pas nécessairement de sens pour wget
lié par les E / S réseau), et xargs
s'exécutera une à la fois.
Une fonctionnalité intéressante qui parallel
a dépassé le xargs
fait de garder la sortie des travaux exécutés simultanément séparés, mais si vous ne vous en souciez pas, elle xargs
est plus susceptible d'être préinstallée.
jobs
dépend de nombreux facteurs: latence du chemin, bande passante du chemin, politiques du serveur distant, etc.
aria2 fait cela.
http://sourceforge.net/apps/trac/aria2/wiki/UsageExample#Downloadfileslistedinafileconcurrently
Exemple: aria2c http://example.org/mylinux.iso
Vous pouvez l'implémenter en utilisant Python et la bibliothèque pycurl. La bibliothèque pycurl possède l'interface "multi" qui implémente sa propre boucle paire qui permet plusieurs connexions simultanées.
Cependant, l'interface est plutôt semblable à C et donc un peu lourde par rapport à d'autres codes, plus "Pythonic".
J'ai écrit un wrapper pour cela qui construit un client de type navigateur plus complet par-dessus. Vous pouvez utiliser cela comme exemple. Voir le module pycopia.WWW.client . HTTPConnectionManager encapsule la multi-interface.
Une partie de la page de manuel de GNU Parallel contient un exemple de wget récursif parallèle.
https://www.gnu.org/software/parallel/man.html#EXAMPLE:-Breadth-first-parallel-web-crawler-mirrorer
Le HTML est téléchargé deux fois: une fois pour l'extraction des liens et une fois pour le téléchargement sur le disque. Les autres contenus ne sont téléchargés qu'une seule fois.
Si vous n'avez pas besoin de la réponse récursive, l'éphémient semble évident.
Les victimes de votre téléchargement parallèle ne seront pas amusées: elles s'attendent à ce qu'une connexion serve chaque client, la configuration de plusieurs connexions signifie moins de clients dans l'ensemble. (C'est à dire, cela est considéré comme un comportement grossier).