При загрузке больших файлов необходимо много раз приостанавливать загрузку. Большой файл можно скачать с помощью wget
. Сначала начните загрузку, затем убейте wget
, затем возобновите загрузку с помощью wget -c
.
Я хочу приостановить загрузку слишком много раз в зависимости от таких событий, как сбой питания, недоступность сети и т. Д., И хочу автоматизировать его с помощью сценария. Поэтому нажатие Ctrl + C kbd> не вариант. Я знаю, что процесс может быть приостановлен с помощью kill -STOP "$pid"
. Приостановка не должна закрывать соединение с веб-сайтом, либо она должна ждать команды возобновления, либо пропускная способность снижается до очень низкого уровня.
Я нашел эти команды, используя aria2c
в aria2.sourceforge.net , но не могу их успешно использовать. Это использует метод RPC. Можно ли использовать его в скрипте?
aria2.pause(gid)
Этот метод приостанавливает загрузку, обозначенную gid. gid имеет тип string. Статус приостановленной загрузки становится приостановленным. Если загрузка активна, загрузка помещается в первую позицию очереди ожидания. Пока статус приостановлен, загрузка не начинается. Чтобы изменить статус на ожидание, используйте метод aria2.unpause (). Этот метод возвращает GID приостановленной загрузки.
blockquote>
aria2.unpause(gid)
Этот метод изменяет состояние загрузки, обозначенной gid, с паузы на ожидание. Это делает загрузку приемлемой для перезапуска. gid имеет тип string. Этот метод возвращает GID не приостановленной загрузки.
blockquote>Вопрос
- Как приостановить (или ограничить полосу пропускания) уже запущенную загрузку aria
- Есть ли лучше загрузчик, чем
aria
для использования в сценарии- В сценарии может использоваться метод RPC Wether
Чтобы это работало, ваш 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).
Проще всего использовать сочетание клавиш Ctrl + C в терминале / консоли, чтобы приостановить загрузку. Внутренне он создает временный файл в том же каталоге с расширением .aria2, и когда вы пытаетесь перезагружать файл, он начинает с позиции, которую он сделал для приостановки. И не используйте Ctrl + Z.