Фон:
Я использую wget (версия 1.14-15.el7) в RedHat Linux (версия 7.3 (Maipo)), в терминале Bash (версия 4.2.46 (1)).
К сожалению, я ограничен этим конкретным образом RHEL, поэтому я не могу перейти на более новую версию wget.
Цель:
Я пытаюсь настроить wget таким образом, чтобы в случае неудачной попытки загрузки он выполнял следующие действия:
1) Повторяет попытку загрузки еще 4 раза (всего 5 попыток)
2) Ожидание ФИКСИРОВАННОГО промежутка времени (30 секунд) между попытками загрузки («повторные попытки»)
Для контекста, вот соответствующий фрагмент руководства по wget:
-w seconds
--wait=seconds
Wait the specified number of seconds between the retrievals. Use of this option is
recommended, as it lightens the server load by making the requests less frequent.
Instead of in seconds, the time can be specified in minutes using the "m" suffix, in
hours using "h" suffix, or in days using "d" suffix.
Specifying a large value for this option is useful if the network or the destination
host is down, so that Wget can wait long enough to reasonably expect the network error
to be fixed before the retry. The waiting interval specified by this function is
influenced by "--random-wait", which see.
--waitretry=seconds
If you don't want Wget to wait between every retrieval, but only between retries of
failed downloads, you can use this option. Wget will use linear backoff, waiting 1
second after the first failure on a given file, then waiting 2 seconds after the second
failure on that file, up to the maximum number of seconds you specify.
By default, Wget will assume a value of 10 seconds.
Чтобы было ясно, я использую флаг --wait
, а не флаг --waitretry
.
Процесс:
Во-первых, я экспортирую / установил неправильные http_proxy и https_proxy, чтобы гарантировать, что любая попытка загрузки истечет.
Я запускаю следующую команду:wget --tries=5 --wait=30 <url> -O <output_filename>
На данный момент функциональность --wait
НЕ работает, как ожидалось. В частности, он НЕ ждет 30 секунд после каждой попытки загрузки.
Вместо:
1) После первой попытки он ждет 1с.
2) После 2-й попытки ждет 2с.
3) После 3-й попытки ждет 3с.
и так далее ...
Другими словами, несмотря на использование флага --wait
(что должно приводить к фиксированному времени ожидания между попытками загрузки), wget, похоже, выполняет «линейный откат», как описано в разделе флага --waitretry
.
ПРОБЛЕМА:
Мне нужна функциональность флага --wait
, а НЕ флага --waitretry
.
К сожалению, флаг --wait
похоже, действует как флаг --waitretry
- есть ли способ исправить эту очевидную ошибку в wget, чтобы использование флага --wait
к ожидаемому фиксированному времени ожидания между попытками загрузки?