You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Quand un fichier ZIP n'a pas été totalement téléchargé lors d'une itération précédente (par exemple à cause d'une mauvaise connexion), il apparaît quand même dans le dossier (mais n'est pas un ZIP complet et n'est pas ouvrable par le gestionnaire de dossiers). Cela peut causer une erreur BadZipFile à l'exécution suivante qui n'est pas triviale à comprendre (cf. ci-dessous).
Plusieurs possibilités :
expliquer pourquoi dans la doc ainsi que la solution (qui est tout simplement de supprimer manuellement le fichier ZIP incomplet)
changer le fonctionnement : télécharger dans un dossier temporaire puis modifier l'emplacement du fichier ZIP complet ? ajouter un timeout pour avoir une erreur plus claire ?
024-08-23 13:39:15.774 INFO Reusing already downloaded file at : C:\Users\dubrocac\.mobility\data\insee\census_localized_individuals\RP2019_INDCVIZD_csv.zip.
Traceback (most recent call last):
File ~\AppData\Local\miniforge3\envs\mob2\Lib\site-packages\spyder_kernels\py3compat.py:356 in compat_exec
exec(code, globals, locals)
File c:\users\dubrocac\documents\github\mobility\examples\trip_localizer_detailed_steps\trip_localizer_detailed_steps.py:54
trips_df = trips.get()
File ~\Documents\GitHub\mobility\mobility\asset.py:84 in get
asset = self.create_and_get_asset(*args, **kwargs)
File ~\Documents\GitHub\mobility\mobility\trips.py:68 in create_and_get_asset
population = self.inputs["population"].get()
File ~\Documents\GitHub\mobility\mobility\asset.py:84 in get
asset = self.create_and_get_asset(*args, **kwargs)
File ~\Documents\GitHub\mobility\mobility\population.py:41 in create_and_get_asset
census_data = self.get_census_data(transport_zones)
File ~\Documents\GitHub\mobility\mobility\population.py:94 in get_census_data
census_data = [CensusLocalizedIndividuals(tz_region).get() for tz_region in transport_zones_regions]
File ~\Documents\GitHub\mobility\mobility\population.py:94 in <listcomp>
census_data = [CensusLocalizedIndividuals(tz_region).get() for tz_region in transport_zones_regions]
File ~\Documents\GitHub\mobility\mobility\asset.py:84 in get
asset = self.create_and_get_asset(*args, **kwargs)
File ~\Documents\GitHub\mobility\mobility\parsers\census_localized_individuals.py:60 in create_and_get_asset
with zipfile.ZipFile(output_path, "r") as zip_ref:
File ~\AppData\Local\miniforge3\envs\mob2\Lib\zipfile.py:1312 in __init__
self._RealGetContents()
File ~\AppData\Local\miniforge3\envs\mob2\Lib\zipfile.py:1379 in _RealGetContents
raise BadZipFile("File is not a zip file")
BadZipFile: File is not a zip file
The text was updated successfully, but these errors were encountered:
Bien vu ! Je pense qu'il faut repérer si le téléchargement est complet et soulever une exception si ce n'est pas le cas. C'est fait dans ce commit : a9f63b1.
J'en ai profité pour augmenter la taille des chunks de téléchargement, qui devraient maintenant être un peu plus rapides.
Après quelques tests il s'avère que l'utilisation de la propriété content-length n'est pas toujours utilisable pour déterminer la taille attendue du fichier final : tous les serveurs ne la donnent pas, et la taille peut être donnée avant ou après dézippage.
Donc j'ai remplacé l'erreur par quelque chose de plus soft : on écrit les données dans un fichier avec un suffixe .part, que l'on ne renomme avec le bon nom qu'une fois tout le fichier téléchargé. De cette manière si le code plante en cours de téléchargement, le fichier cible n'existe pas et le code relance le téléchargement (de zéro pour le moment).
Quand un fichier ZIP n'a pas été totalement téléchargé lors d'une itération précédente (par exemple à cause d'une mauvaise connexion), il apparaît quand même dans le dossier (mais n'est pas un ZIP complet et n'est pas ouvrable par le gestionnaire de dossiers). Cela peut causer une erreur
BadZipFile
à l'exécution suivante qui n'est pas triviale à comprendre (cf. ci-dessous).Plusieurs possibilités :
The text was updated successfully, but these errors were encountered: