j'ai pris le temps de regarder de plus près et de tester en local ...

Le vendredi 11 novembre 2011 à 13:22 +0100, Jocelyn Jaubert a écrit :
> Bonjour,
> 
> J'ai eu des remarques il y a peu me disant que Osmose téléchargeait les
> extracts de Geofabrik en deux fois au lieu d'une seule:
> 
>   - une première fois en téléchargeant 12k
>   - une deuxième fois en téléchargeant tout.
> 
> D'après ce fichier:
> https://gitorious.org/osmose/backend/blobs/master/modules/download.py
> 
> C'est à cause de ce bout de code:
> 
>     # get remote file timestamp
>     url_ts = urllib2.urlopen(url).headers.get("Last-Modified", 1)
c'est l'equivalent de wget en python
c'est utilisé ici pour ne pas télécharger inutilement un fichier ayant
l'extension bz2 ou pbf .

>     # compare timestamp
>     if loc_ts == url_ts:
>         logger.log(u"not newer")
>         return False
Comparaison entre la date du fichier distant et la donnée locale
sauvegardée. Si c'est la meme, le programme s'interrompt.
(le code ci dessous n'est pas exécuté)
>     
>     # donwload the file
>     s, o = commands.getstatusoutput("wget -o /dev/null -O %s %s"%(file_dl, 
> url))
> 
> Je pense qu'on peut re-écrire ce code en n'utilisant que des routines
> python à la place du wget, mais ma connaissance python n'est pas
> suffisante pour savoir quel est le module à utiliser. Peut-être qu'il
> faudrait modifier les headers HTTP pour mettre directement la date du
> fichier téléchargé, et utiliser le code de retour 304 pour décider si
> il y a un nouveau fichier
> 
si effectivement, SYSTEMATIQUEMENT TOUS les téléchargements se font une
première fois en téléchargeant 12k et une deuxième fois en téléchargeant
tout
cela veut dire que la date entre les telechargements est superieur a la
frequence de mise a jour des fichiers sur Geofabrik (normalement une
journée)

dans ce cas on peut desactiver une partie du code
ligne 32 (nom du fichier ou est sauvegardée la date et l'heure)
ligne 45 a 48 (date et heure du fichier local ou 0)
ligne 50 (recuperation date et heure du fichier distant)
Ligne 52 a 54 (comparaison date puis sortie eventuelle du prg)
Ligne 86 (ecriture date et heure du fichier traité)

MAIS

il ne faut pas que les informations de date soit utilisées ailleurs

Je vois une autre solution mais cela implique de garder les fichiers bz2
et pbf en local....
par l'utilisation de 

wget -k -N (N = newer : en une fois, wget verifie si le fichier a
telecharger est plus recent et le telecharge le cas echeant)

bunzip2 -f -k (k = keep data file: on garde le fichier ziper et extrait
son contenu)


J'espere avoir été suffisement clair

didier


_______________________________________________
dev-fr mailing list
dev-fr@openstreetmap.org
http://lists.openstreetmap.org/listinfo/dev-fr

Répondre à