Как приостановить загрузку арии

При загрузке больших файлов необходимо много раз приостанавливать загрузку. Большой файл можно скачать с помощью wget. Сначала начните загрузку, затем убейте wget, затем возобновите загрузку с помощью wget -c.
Я хочу приостановить загрузку слишком много раз в зависимости от таких событий, как сбой питания, недоступность сети и т. Д., И хочу автоматизировать его с помощью сценария. Поэтому нажатие Ctrl + C не вариант. Я знаю, что процесс может быть приостановлен с помощью kill -STOP "$pid". Приостановка не должна закрывать соединение с веб-сайтом, либо она должна ждать команды возобновления, либо пропускная способность снижается до очень низкого уровня.

Я нашел эти команды, используя aria2c в aria2.sourceforge.net , но не могу их успешно использовать. Это использует метод RPC. Можно ли использовать его в скрипте?
aria2.pause(gid)

Этот метод приостанавливает загрузку, обозначенную gid. gid имеет тип string. Статус приостановленной загрузки становится приостановленным. Если загрузка активна, загрузка помещается в первую позицию очереди ожидания. Пока статус приостановлен, загрузка не начинается. Чтобы изменить статус на ожидание, используйте метод aria2.unpause (). Этот метод возвращает GID приостановленной загрузки.

aria2.unpause(gid)

Этот метод изменяет состояние загрузки, обозначенной gid, с паузы на ожидание. Это делает загрузку приемлемой для перезапуска. gid имеет тип string. Этот метод возвращает GID не приостановленной загрузки.

Вопрос

  1. Как приостановить (или ограничить полосу пропускания) уже запущенную загрузку aria
  2. Есть ли лучше загрузчик, чем aria для использования в сценарии
  3. В сценарии может использоваться метод RPC Wether
7
задан 21 March 2013 в 12:36

2 ответа

Чтобы это работало, ваш aria2 должен поддерживать опцию pause . Найдите --pause[=true|false] в man aria2c. Он работает в aria2_1.12.0-1_i386 [oneric] (и позже).

Первый запуск RPC-сервера: aria2c --enable-rpc=true (для более старой версии aria2c --enable-xml-rpc=true)
Затем используйте RPC с помощью http://localhost:6800/jsonrpc
В следующем примере добавляется http : //example.org/file to aria2: В консоли python введите следующий

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"}'

Следующий пример приостанавливает загрузку, чей GID равен «3»:

XML RPC

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

Если вы получаете что-то вроде ниже, ваша версия aria2 не поддерживает ее ,

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

В версии, в которой используется aria2c --enable-xml-rpc=true, могут использоваться другие параметры, такие как добавление файлов и т. Д. (С использованием XML RPC).

0
ответ дан 21 March 2013 в 12:36

Проще всего использовать сочетание клавиш Ctrl + C в терминале / консоли, чтобы приостановить загрузку. Внутренне он создает временный файл в том же каталоге с расширением .aria2, и когда вы пытаетесь перезагружать файл, он начинает с позиции, которую он сделал для приостановки. И не используйте Ctrl + Z.

0
ответ дан 21 March 2013 в 12:36

Другие вопросы по тегам:

Похожие вопросы: