Bug #19996
cellule famille : "nothing in cache" est levé sans même avoir regardé dans le cache
100%
Description
def render(self, context): self.context = context if not context.get('synchronous'): raise NothingInCacheException()
Ça force un rendu asynchrone même pour les moments où on aurait toutes les infos en local, c'est dommage.
Fichiers
Révisions associées
Historique
Mis à jour par Josué Kouka il y a plus de 6 ans
- Fichier 0001-family-don-t-force-async-cell-rendering-19996.patch 0001-family-don-t-force-async-cell-rendering-19996.patch ajouté
- Statut changé de Nouveau à En cours
- Assigné à mis à Josué Kouka
- Patch proposed changé de Non à Oui
Mis à jour par Benjamin Dauvergne il y a plus de 6 ans
On est ok avec le cache_duration=15 par défaut maintenant (le test passerait même sans cette modification) ?
Si on garde cette modification (virer cache_duration=0
) je verrai en plus d'ajouter un paramètre invalidate_cache à get_family_json() et de le rappeler avec invalidate_cache=True dans FamilyLinkView et FamilyUnlinkView.
- get_family
- unlink_family (ce serait bien si c'était un POST mais bon, je ne sais pas qui a fait le module family dans passerelle, qu'il soit maudit)
- link_family (même remarque)
Et les endpoints seraient définis dans ces fonctions et pas parsemés dans models.py et views.py.
La première fonction par défaut prend dans le cache éventuellement et les deux autres invalident le cache de la première en l'appelant avec invalidate_cache=True (ou alors on ajoute une méthode à notre classe Request pour invalider du cache, comme tu veux).
Un peu de data layer ne fait pas de mal.
Mis à jour par Josué Kouka il y a plus de 6 ans
- Fichier 0001-family-don-t-force-async-cell-rendering-19996.patch 0001-family-don-t-force-async-cell-rendering-19996.patch ajouté
Benjamin Dauvergne a écrit :
On est ok avec le cache_duration=15 par défaut maintenant (le test passerait même sans cette modification) ?
Yep.
Si on garde cette modification (virer
Bon en vrai c'est nul cette méthode get_family_json qui modifie des trucs dans passerelle avec des GET, faudrait trois fonctions:cache_duration=0
) je verrai en plus d'ajouter un paramètre invalidate_cache à get_family_json() et de le rappeler avec invalidate_cache=True dans FamilyLinkView et FamilyUnlinkView.
- get_family
- unlink_family (ce serait bien si c'était un POST mais bon, je ne sais pas qui a fait le module family dans passerelle, qu'il soit maudit)
- link_family (même remarque)
Et les endpoints seraient définis dans ces fonctions et pas parsemés dans models.py et views.py.
La première fonction par défaut prend dans le cache éventuellement et les deux autres invalident le cache de la première en l'appelant avec invalidate_cache=True (ou alors on ajoute une méthode à notre classe Request pour invalider du cache, comme tu veux).
Un peu de data layer ne fait pas de mal.
Ok. link_family
et unlink_family
invalide de le cache.
Mis à jour par Josué Kouka il y a plus de 6 ans
- Fichier 0001-family-don-t-force-async-cell-rendering-19996.patch 0001-family-don-t-force-async-cell-rendering-19996.patch ajouté
Je rajoute des tests pour les vues family-link
et family-unlink
.
Mis à jour par Serghei Mihai il y a plus de 6 ans
Ce n'est pas l'objet de ce ticket.
Je suis d'avis de le faire dans un ticket à part.
Mis à jour par Josué Kouka il y a plus de 6 ans
Serghei Mihai a écrit :
Ce n'est pas l'objet de ce ticket.
Je suis d'avis de le faire dans un ticket à part.
J'en ai rajouté parce que j'ai fais des modifications sur ces vues. Pour m'assurer que ces modifications n'engendrent pas d'erreur, il me faut les tester. D'où les tests.
Mis à jour par Serghei Mihai il y a plus de 6 ans
Tu rajoutes 2 fonctions link_family
et unlink_family
qui sont appelées qu'une seule fois, quel interet?
Tu peux rester sur get_family_json
auquel tu passes le paramètre invalidate_cache
.
Mis à jour par Benjamin Dauvergne il y a plus de 6 ans
Serghei Mihai a écrit :
Tu rajoutes 2 fonctions
link_family
etunlink_family
qui sont appelées qu'une seule fois, quel interet?
L'intérêt c'est moi qui le donne plus haut, merci d'y porter de l'intérêt :)
Tu peux rester sur
get_family_json
auquel tu passes le paramètreinvalidate_cache
.
Nan, c'est complètement nul comme nom de fonction, get et json dans le même nom de fonction c'est un anti-pattern presque :) remote_service c'est moche aussi mais comme c'est complètement caché dans utils.py c'est moins grave, là le code devient claire et les problématiques de gestion du cache sont proprement encapsulées dans utils.py (j'aurai aussi remis ça dans model.py ça nous faisait gagner un fichier inutile).
Mis à jour par Serghei Mihai il y a plus de 6 ans
Ok. Allons au bout de ta logique et renommons get_family_json
en get_family
.
Et au passage dans link_family
au lieu d'encoder les paramètres via urlencode
les passer dans params
à requests.get
qui fera le nécessaire.
Mis à jour par Josué Kouka il y a plus de 6 ans
- Fichier 0001-family-don-t-force-async-cell-rendering-19996.patch 0001-family-don-t-force-async-cell-rendering-19996.patch ajouté
Serghei Mihai a écrit :
Ok. Allons au bout de ta logique et renommons
get_family_json
enget_family
.
Et au passage danslink_family
au lieu d'encoder les paramètres viaurlencode
les passer dansparams
àrequests.get
qui fera le nécessaire.
Mis à jour par Josué Kouka il y a plus de 6 ans
- Statut changé de En cours à Résolu (à déployer)
- % réalisé changé de 0 à 100
commit 83120c469a82212c099aec3decbe9ec7143c188c Author: Josue Kouka <jkouka@entrouvert.com> Date: Tue Dec 5 18:07:11 2017 +0100 family: don't force async cell rendering (#19996)
Mis à jour par Frédéric Péters il y a plus de 5 ans
- Statut changé de Résolu (à déployer) à Fermé
family: don't force async cell rendering (#19996)