Как приостановить загрузку арии
При загрузке больших файлов необходимо много раз приостанавливать загрузку. Большой файл можно загрузить с помощью 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 не приостановленной загрузки.
Вопрос
- Как приостановить (или ограничить пропускную способность) уже запущенную загрузку арии
- Есть ли лучший загрузчик, чем
aria
использовать в сценарии - Может ли метод RPC использоваться в скрипте
2 ответа
Чтобы это работало aria2
должен поддерживать опцию паузы. Ищи --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 в 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.