web-dev-qa-db-fra.com

Comment mettre en pause un téléchargement aria en cours d'exécution

Lors du téléchargement de gros fichiers, il est nécessaire de suspendre le téléchargement plusieurs fois. Un gros fichier peut être téléchargé en utilisant wget. Commencez par télécharger, puis tuez wget, puis reprenez le téléchargement par wget -c.
Je souhaite interrompre trop souvent les téléchargements en fonction d'événements tels qu'une panne de courant, la non-disponibilité du réseau, etc., et je souhaite l'automatiser à l'aide d'un script. Tellement pressant Ctrl+C n'est pas une option. Je sais qu'un processus peut être suspendu par kill -STOP "$pid" La pause ne doit pas fermer la connexion au site Web, elle doit attendre la commande de reprise ou la bande passante limitée à une utilisation très faible.

J'ai trouvé ces commandes en utilisant aria2c dans aria2.sourceforge.net , mais je ne peux pas l'utiliser avec succès. Ceci utilise la méthode RPC. Puis-je l'utiliser dans un script?
aria2.pause(gid)

Cette méthode met en pause le téléchargement noté gid. gid est de type chaîne. Le statut de téléchargement suspendu devient suspendu. Si le téléchargement est actif, le téléchargement est placé en première position de la file d'attente. Tant que l'état est en pause, le téléchargement n'est pas démarré. Pour changer le statut en attente, utilisez la méthode aria2.unpause (). Cette méthode retourne le GID du téléchargement en pause.

aria2.unpause(gid)

Cette méthode change le statut du téléchargement désigné par gid de pause à attente. Cela rend le téléchargement éligible pour redémarrer. gid est de type chaîne. Cette méthode retourne le GID du téléchargement non suspendu.

Question

  1. Comment mettre en pause (ou limiter la bande passante) un téléchargement déjà en cours d’air
  2. Y at-il un meilleur download que aria à utiliser dans le script
  3. Si la méthode RPC peut être utilisée dans un script
7
totti

Pour que cela fonctionne, votre aria2 devrait prendre en charge l'option pause . Recherchez --pause[=true|false] dans man aria2c. Cela fonctionne dans aria2_1.12.0-1_i386 [oneric] (et les versions ultérieures).

Commencez par démarrer le serveur RPC: aria2c --enable-rpc=true (Pour les versions antérieures aria2c --enable-xml-rpc=true)
Puis utilisez RPC en utilisant http://localhost:6800/jsonrpc
L'exemple suivant ajoute http://example.org/file à aria2: Dans une console python tapez ce qui suit

JSON RPC

import urllib2, json
jsonreq = json.dumps({'jsonrpc':'2.0', 'id':'qwer',
    'method':'aria2.addUri',
    'params':[['http://example.org/file']]})
c = urllib2.urlopen('http://localhost:6800/jsonrpc', jsonreq)
c.read()
'{"id":"qwer","jsonrpc":"2.0","result":"2089b05ecca3d829"}'

L'exemple suivant met en pause le téléchargement dont l'identifiant est "3":

XML RPC

import xmlrpclib
s = xmlrpclib.ServerProxy('http://localhost:6800/rpc')
s.aria2.pause('3')

Si vous obtenez quelque chose comme ci-dessous, votre version de aria2 ne la prend pas en charge.

xmlrpclib.Fault: <Fault 1: 'No such method: aria2.pause'

Dans la version qui utilise aria2c --enable-xml-rpc=true, d'autres options peuvent être utilisées, telles que l'ajout de fichiers, etc. (en utilisant XML RPC).

6
Prinz

Le plus simple consiste à utiliser le raccourci Ctrl + C dans terminal/konsole pour suspendre le téléchargement. En interne, il crée un fichier temporaire dans le même répertoire d’extension .aria2 et, lorsque vous essayez de retélécharger le fichier, il commence à partir de l’emplacement où il a été mis en pause. Et n'utilisez pas Ctrl + Z.

2
shivshnkr