save_large_file downloads are not robust to transient HTTP/host errors
Les mainteneurs répondent en général sous 1 jour
@Sriram-Nambiar y travaille déjà.
Depuis le 15/10/2026.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 74/100
Piste de recherche
La commande wget est construite dans save_large_file() dans zimscraperlib/download.py ; commence par là et examine l'option existante --retry-connrefused. La correction consiste à ajouter les options de nouvelle tentative de wget pour les erreurs HTTP (502/503/504/429) et les échecs de résolution d'hôte, puis à vérifier la chaîne de commande. C'est terminé lorsque la commande relance ces erreurs transitoires et que la modification est vérifiée sur un serveur local qui renvoie un 503 en plein téléchargement.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
save_large_file() (in zimscraperlib/download.py) shells out to wget with:
wget -t {retries} --retry-connrefused --random-wait --progress=dot:giga -O {fpath} -c {url}
In production (see openzim/zimwright#3), a download failed twice in a row, and it looked like wget wasn't retrying interrupted downloads at all, despite -t {retries} being set.
By default, wget only retries on a specific set of transient errors. Per its manual:
The default is to retry 20 times, with the exception of fatal errors like "connection refused" or "not found" (404), which are not retried.
This command only overrides that for connection-refused (--retry-connrefused). It does not cover:
- Non-2xx HTTP responses such as
502/503/504/429— a transient error from a flaky server/CDN/proxy mid-download — which wget treats as fatal and aborts on, with zero retries. - Host/DNS resolution errors ("Temporary failure in name resolution"), also fatal by default.
Since large file downloads can run for a long time, a brief upstream hiccup returning one of these responses is enough to abort the whole download, with no retry attempted at all — this matches what was observed in the zimwright recipe run.
- Langage dominant
- Python
- Étoiles
- 31
- Forks
- 32
- Merge moyen
- 5 j 10 h
- PR mergées (30 j)
- 4
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de openzim/python-scraperlib
-
[next major] Remove deprecated 'convert' parameter for optimize_image function inside optimization.pyPeut-être pris @Sriram-Nambiar l’a pris il y a 2 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
openzim/python-scraperlib#292 · 1 commentaire · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 3/5 1-2 jours Accessibilité débutants 68/100
openzim/python-scraperlib#346 ·
Les mainteneurs répondent en général sous 1 jour
-
Add fuzzy rule to rewrite URLs of lesbases.anct.gouv.frPeut-être pris @Sriram-Nambiar l’a pris il y a 1 jour. Ouverte
openzim/python-scraperlib#334 · 2 commentaires · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
Is beartype cost acceptable?Ouverte
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 35/100
openzim/python-scraperlib#325 · 4 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
Release 5.5.0Peut-être à nouveau libre @benoit74 l’a pris il y a 141 jours, et aucune pull request n’est ouverte. Ouverte
openzim/python-scraperlib#309 · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de openzim/python-scraperlib
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
omegaup/omegaup#10353 · 1 commentaire ·
Les mainteneurs répondent en général sous 5 jours
-
bot-triaged module: LrScheduler module: optimizer triaged
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
Les mainteneurs répondent en général sous 1 jour
-
documentation glm5 llm-model
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
vllm-project/vllm-ascend#19062 ·
Les mainteneurs répondent en général sous 1 jour
-
Author Page: shuai-zhao-llmOuverteauthor-page correction
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
acl-org/acl-anthology#10496 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour