Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

save_large_file downloads are not robust to transient HTTP/host errors

Ouverte Adaptée aux débutants
#348 1 commentaire 0 réactions 1 personne assignée Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

@Sriram-Nambiar y travaille déjà.

Depuis le 15/10/2026.

  • #349 par @pawank925 — ouverte
  • #351 par @Sriram-Nambiar — ouverte

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
74/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
python
Domaine
tooling

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

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de openzim/python-scraperlib

Toutes les issues de openzim/python-scraperlib

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.