Projet

Général

Profil

Development #10196

Quand un fichier de métadonnée est issue d'une URL ou d'un fichier il n'est jamais plus rechargé

Ajouté par Benjamin Dauvergne il y a environ 8 ans. Mis à jour il y a presque 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
04 mars 2016
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

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

0002-update-and-cache-metadata-from-URL-and-path-10196.patch (18,1 ko) 0002-update-and-cache-metadata-from-URL-and-path-10196.patch Benjamin Dauvergne, 07 juin 2019 14:50
0001-code-style-10196.patch (10,9 ko) 0001-code-style-10196.patch Benjamin Dauvergne, 07 juin 2019 14:50
0002-update-and-cache-metadata-from-URL-and-path-10196.patch (19,6 ko) 0002-update-and-cache-metadata-from-URL-and-path-10196.patch Benjamin Dauvergne, 07 juin 2019 16:50
0001-code-style-10196.patch (10,9 ko) 0001-code-style-10196.patch Benjamin Dauvergne, 07 juin 2019 16:50
0002-update-and-cache-metadata-from-URL-and-path-10196.patch (19,6 ko) 0002-update-and-cache-metadata-from-URL-and-path-10196.patch Benjamin Dauvergne, 07 juin 2019 18:07
0001-code-style-10196.patch (10,9 ko) 0001-code-style-10196.patch Benjamin Dauvergne, 07 juin 2019 18:07
0002-update-and-cache-metadata-from-URL-and-path-10196.patch (33,5 ko) 0002-update-and-cache-metadata-from-URL-and-path-10196.patch Benjamin Dauvergne, 07 juin 2019 21:49
0001-code-style-10196.patch (18,8 ko) 0001-code-style-10196.patch Benjamin Dauvergne, 07 juin 2019 21:49
0001-really-retrieve-XML-encoding-10196.patch (1,4 ko) 0001-really-retrieve-XML-encoding-10196.patch Benjamin Dauvergne, 17 juin 2019 18:17
0002-code-style-10196.patch (18,4 ko) 0002-code-style-10196.patch Benjamin Dauvergne, 17 juin 2019 18:17
0003-update-and-cache-metadata-from-URL-and-path-10196.patch (38,5 ko) 0003-update-and-cache-metadata-from-URL-and-path-10196.patch Benjamin Dauvergne, 17 juin 2019 18:17
0001-really-retrieve-XML-encoding-10196.patch (1,47 ko) 0001-really-retrieve-XML-encoding-10196.patch Benjamin Dauvergne, 18 juin 2019 00:53
0002-code-style-10196.patch (18,4 ko) 0002-code-style-10196.patch Benjamin Dauvergne, 18 juin 2019 00:53
0003-update-and-cache-metadata-from-URL-and-path-10196.patch (38,1 ko) 0003-update-and-cache-metadata-from-URL-and-path-10196.patch Benjamin Dauvergne, 18 juin 2019 00:53

Révisions associées

Révision 74b61de6 (diff)
Ajouté par Benjamin Dauvergne il y a environ 8 ans

replace dateutil by isodate (#10196)

isodate has better support for the full ISO8601 specification.

Révision 968aa07f (diff)
Ajouté par Benjamin Dauvergne il y a presque 5 ans

really retrieve XML encoding (#10196)

Révision 83a09d87 (diff)
Ajouté par Benjamin Dauvergne il y a presque 5 ans

code style (#10196)

Révision 39e2e7e5 (diff)
Ajouté par Benjamin Dauvergne il y a presque 5 ans

update and cache metadata from URL and path (#10196)

Historique

#1

Mis à jour par Frédéric Péters il y a environ 8 ans

Ticket sans rapport ?

#2

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.

#3

Mis à jour par Benjamin Dauvergne il y a presque 8 ans

  • Version cible 1.2.25 supprimé
#4

Mis à jour par Benjamin Dauvergne il y a presque 8 ans

  • Assigné à mis à Benjamin Dauvergne
#5

Mis à jour par Benjamin Dauvergne il y a plus de 6 ans

  • Assigné à Benjamin Dauvergne supprimé
#6

Mis à jour par Benjamin Dauvergne il y a presque 5 ans

  • Assigné à mis à Benjamin Dauvergne
#7

Mis à jour par Benjamin Dauvergne il y a presque 5 ans

atomicwrites est dans stretch j'ai vérifié.

#8

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)

#9

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)

#10

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.

#11

Mis à jour par Benjamin Dauvergne il y a presque 5 ans

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.

#12

Mis à jour par Benjamin Dauvergne il y a presque 5 ans

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).

#14

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?

#15

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.

#16

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)

#17

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 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)

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)

#18

Mis à jour par Benjamin Dauvergne il y a presque 5 ans

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).

#19

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 simple xml_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 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.

Je disais ça parce que justement, None :

isodate.parse_datetime(None) -> AttributeError: 'NoneType' object has no attribute 'split'
#20

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 simple xml_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.

#22

Mis à jour par Christophe Siraut il y a presque 5 ans

  • Statut changé de Solution proposée à Solution validée
#23

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)
#24

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

Formats disponibles : Atom PDF