Contexte:
J'utilise wget (version 1.14-15.el7) sur RedHat Linux (version 7.3 (Maipo)), dans une Bash (version 4.2.46 (1)) Terminal. Malheureusement, je suis limité à cette image RHEL particulière, donc je ne peux pas passer à une version plus récente de wget.fonctionnalité d'attente dans Wget ne fonctionne pas comme prévu
Objectif:
Je suis en train de configurer wget afin que, si une tentative de téléchargement échoue, il effectue les opérations suivantes:
1) TENTATIVES le téléchargement 4 fois plus (total de 5 tentatives)
2) attend un laps de temps (30 secondes) entre tentatives de téléchargement (« ») retries
FIXE Pour le contexte, voici un extrait pertinent du manuel 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.
Pour être clair, j'utilise le drapeau --wait
, PAS le drapeau --waitretry
.
processus:
D'abord, j'exporter/définir un mauvais http_proxy et https_proxy, pour assurer toute tentative de téléchargement expire.
J'exécutez la commande suivante: wget --tries=5 --wait=30 <url> -O <output_filename>
À ce stade, la fonctionnalité --wait
ne fonctionne pas comme prévu. Plus précisément, il n'attend pas 30 secondes après chaque tentative de téléchargement.
À la place:
1) Après la première tentative, il attend 1s.
2) Après la 2ème tentative, il attend 2s.
3) Après la 3ème tentative, il attend 3s.
et ainsi de suite ...
En d'autres termes, malgré l'utilisation du drapeau --wait
(ce qui devrait entraîner un temps d'attente entre les tentatives de téléchargement fixe), wget semble être l'exécution d'une « linéaire backoff » tel que décrit dans le --waitretry
section de drapeau.
PROBLÈME:
Je veux la fonctionnalité du drapeau --wait
, pas le drapeau --waitretry
.
Malheureusement, le drapeau --wait
semble agir comme le drapeau --waitretry
- est-il un moyen de contourner ce bug apparent dans wget, de sorte que l'utilisation des --wait
résultats de drapeau dans le temps d'attente fixe prévu entre les tentatives de téléchargement?
Les questions sur le matériel informatique général et les logiciels sont hors sujet pour Stack Overflow à moins qu'ils ne concernent directement des outils utilisés principalement pour la programmation. Vous pouvez être en mesure d'obtenir de l'aide sur https://superuser.com/questions/tagged/linux – tink
Merci, je vais le déplacer là. – Seth