Development #10196
Quand un fichier de métadonnée est issue d'une URL ou d'un fichier il n'est jamais plus rechargé
0%
Description
Il faudrait conserver un timestamp de la dernière lecture/récupération des métadonnées, et dans le cas d'un fichier conserver le chemin (peut-être en changeant le nom de la clé en METADATA_FILE).
On devrait récupérer le fichier et mettre à jour les métadonnées quand:- le timestamp du fichier est plus récent que celui sauvegardé
- les métadonnées précise cacheDuration et le dernier timestamp est plus vieux que cela
- les métadonnées précise validUntil qui est plus récent que le dernier timestamp mais inférieur au moment présent (si le validUntil était déjà obsolète lors du dernier chargement, on l'ignore)
Si la mise à jour ou la récupération échoue, on continue avec les métadonnées en cache.
Fichiers
Révisions associées
really retrieve XML encoding (#10196)
code style (#10196)
update and cache metadata from URL and path (#10196)
Historique
Mis à jour par Benjamin Dauvergne il y a environ 8 ans
Si je vais avoir besoin d'isodate pour parser l'attribut cacheDuration et de toute façon isodate m'inspire plus confiance que dateutil pour parser des dates iso.
Mis à jour par Benjamin Dauvergne il y a presque 5 ans
- Fichier 0002-update-and-cache-metadata-from-URL-and-path-10196.patch 0002-update-and-cache-metadata-from-URL-and-path-10196.patch ajouté
- Fichier 0001-code-style-10196.patch 0001-code-style-10196.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
atomicwrites est dans stretch j'ai vérifié.
Mis à jour par Frédéric Péters il y a presque 5 ans
Mais ça veut dire ne plus builder pour jessie alors. (moi ça me va)
Mis à jour par Frédéric Péters il y a presque 5 ans
(ou taper ce paquet dans notre dépôt jessie, sans doute jouable)
Mis à jour par Frédéric Péters il y a presque 5 ans
(ou taper ce paquet dans notre dépôt jessie, sans doute jouable)
fait.
Mis à jour par Benjamin Dauvergne il y a presque 5 ans
- Fichier 0002-update-and-cache-metadata-from-URL-and-path-10196.patch 0002-update-and-cache-metadata-from-URL-and-path-10196.patch ajouté
- Fichier 0001-code-style-10196.patch 0001-code-style-10196.patch ajouté
Avec un peu plus de contenur pour le README notamment pour MELLON_IDENTITY_PROVIDERS.
Pour rétrocompatibilité je supporte toujours METADATA=chemin mais il faudrait migrer (notamment le setting loader dans hobo) vers la clé METADATA_PATH.
Mis à jour par Benjamin Dauvergne il y a presque 5 ans
- Fichier 0002-update-and-cache-metadata-from-URL-and-path-10196.patch 0002-update-and-cache-metadata-from-URL-and-path-10196.patch ajouté
- Fichier 0001-code-style-10196.patch 0001-code-style-10196.patch ajouté
et une alerte si des métadonnés ne sont pas mises à jour pendant plus de 24 * CACHE_TIME (donc 1 jour par défaut).
Mis à jour par Benjamin Dauvergne il y a presque 5 ans
- Fichier 0002-update-and-cache-metadata-from-URL-and-path-10196.patch 0002-update-and-cache-metadata-from-URL-and-path-10196.patch ajouté
- Fichier 0001-code-style-10196.patch 0001-code-style-10196.patch ajouté
Un dernier coup pour éviter encore plus de logs inutiles.
Mis à jour par Christophe Siraut il y a presque 5 ans
Je reformulerais: All other keys are override of generic settings -> All other keys override generic settings.
La logique et l'implémentation me semblent ok. Est-ce qu'on anticipe qu'il y'aura éventuellement des installations qui ne fonctionneront plus parce que URL distante absente et durée de cache dépassée?
Mis à jour par Frédéric Péters il y a presque 5 ans
URL distante absente et durée de cache dépassée
Le cache était dans la mémoire des processus, qui s'éteignaient de toute façon avec le temps etc.
Mis à jour par Thomas Noël il y a presque 5 ans
Concernant 0001-code-style-10196.patch, sur mellon/utils.py je suis curieux, pourquoi passer par un xml_encoding[0]
au lieu du simple xml_encoding
précédent ?
Dans le même patch, concernant le expect après le isodate.parse_datetime, on couvre actuellement toutes les exceptions, tu as restreint ici à ValueError, TypError mais on pourrait en avoir d'autres si date_string n'est pas une string par exemple. Je serais pour être bête et laisser un "except Exception:" général. (Parce qu'on traite ici des bouts d'objets réponses de lasso, et je suis pas à l'aise pour savoir si c'est toujours des strings)
(0002 non relu encore par moi, je laisse Christophe finir ou je peux venir en rerelecteur si besoin)
Mis à jour par Benjamin Dauvergne il y a presque 5 ans
Thomas Noël a écrit :
Concernant 0001-code-style-10196.patch, sur mellon/utils.py je suis curieux, pourquoi passer par un
xml_encoding[0]
au lieu du simplexml_encoding
précédent ?Dans le même patch, concernant le expect après le isodate.parse_datetime, on couvre actuellement toutes les exceptions, tu as restreint ici à ValueError, TypError mais on pourrait en avoir d'autres si date_string n'est pas une string par exemple. Je serais pour être bête et laisser un "except Exception:" général. (Parce qu'on traite ici des bouts d'objets réponses de lasso, et je suis pas à l'aise pour savoir si c'est toujours des strings)
Pour moi si c'est pas une string ça fera forcément TypeError (derrière ça utilise re
je pense qui balance du TypeError
dès qu'on a pas une string); et en vrai lasso renvoie juste une string ou None ou vraiment au pire un LassoNode (un objet Python tout con). Même pas peur.
(0002 non relu encore par moi, je laisse Christophe finir ou je peux venir en rerelecteur si besoin)
Mis à jour par Benjamin Dauvergne il y a presque 5 ans
- Fichier 0001-really-retrieve-XML-encoding-10196.patch 0001-really-retrieve-XML-encoding-10196.patch ajouté
- Fichier 0002-code-style-10196.patch 0002-code-style-10196.patch ajouté
- Fichier 0003-update-and-cache-metadata-from-URL-and-path-10196.patch 0003-update-and-cache-metadata-from-URL-and-path-10196.patch ajouté
rebasé sur master, j'ai séparé les histoires de xml_encoding, en vrai même si c'est None ça marche (parce que si on met response.encoding à None, requests autodétecte ou prend UTF-8 par défaut je ne sais pastrop, en tout cas les tests passent quand même avec un en plus dans les réponses SAML).
Mis à jour par Thomas Noël il y a presque 5 ans
Benjamin Dauvergne a écrit :
Thomas Noël a écrit :
Concernant 0001-code-style-10196.patch, sur mellon/utils.py je suis curieux, pourquoi passer par un
xml_encoding[0]
au lieu du simplexml_encoding
précédent ?
Pourquoi t'as pas répondu à ma question metaphysique d'abord hein ?
Dans le même patch, concernant le expect après le isodate.parse_datetime, on couvre actuellement toutes les exceptions, tu as restreint ici à ValueError, TypError mais on pourrait en avoir d'autres si date_string n'est pas une string par exemple. Je serais pour être bête et laisser un "except Exception:" général. (Parce qu'on traite ici des bouts d'objets réponses de lasso, et je suis pas à l'aise pour savoir si c'est toujours des strings)
Pour moi si c'est pas une string ça fera forcément TypeError (derrière ça utilise
re
je pense qui balance duTypeError
dès qu'on a pas une string); et en vrai lasso renvoie juste une string ou None ou vraiment au pire un LassoNode (un objet Python tout con). Même pas peur.
Je disais ça parce que justement, None :
isodate.parse_datetime(None) -> AttributeError: 'NoneType' object has no attribute 'split'
Mis à jour par Benjamin Dauvergne il y a presque 5 ans
Thomas Noël a écrit :
Benjamin Dauvergne a écrit :
Thomas Noël a écrit :
Concernant 0001-code-style-10196.patch, sur mellon/utils.py je suis curieux, pourquoi passer par un
xml_encoding[0]
au lieu du simplexml_encoding
précédent ?Pourquoi t'as pas répondu à ma question metaphysique d'abord hein ?
Ah.. ma réponse s'est perdue; en python tu ne peux pas modifier dans une closure une variable du scope supérieur, elle devient automatiquement locale; le simple fait d'avoir une affectation dans un scope rend la variable locale. Mais j'aurai pu faire un global xml_encoding
aussi, je ne sais pas pourquoi je n'aime pas beaucoup.
Je disais ça parce que justement, None :
isodate.parse_datetime(None) -> AttributeError: 'NoneType' object has no attribute 'split'
Ok alors.
Mis à jour par Benjamin Dauvergne il y a presque 5 ans
- Fichier 0001-really-retrieve-XML-encoding-10196.patch 0001-really-retrieve-XML-encoding-10196.patch ajouté
- Fichier 0002-code-style-10196.patch 0002-code-style-10196.patch ajouté
- Fichier 0003-update-and-cache-metadata-from-URL-and-path-10196.patch 0003-update-and-cache-metadata-from-URL-and-path-10196.patch ajouté
Poum.
Mis à jour par Christophe Siraut il y a presque 5 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Benjamin Dauvergne il y a presque 5 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 39e2e7e5acaf390bbb93f812560d870799f18c1e Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Fri Jun 7 21:46:07 2019 +0200 update and cache metadata from URL and path (#10196) commit 83a09d874e6afda1b128d2b8b5eacb5b026244d1 Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Fri Jun 7 21:43:23 2019 +0200 code style (#10196) commit 968aa07faf7110e32d36252f30d7cac47f8c215e Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Mon Jun 17 18:13:09 2019 +0200 really retrieve XML encoding (#10196)
Mis à jour par Frédéric Péters il y a presque 5 ans
- Statut changé de Résolu (à déployer) à Solution déployée
replace dateutil by isodate (#10196)
isodate has better support for the full ISO8601 specification.