Projet

Général

Profil

Bug #19996

cellule famille : "nothing in cache" est levé sans même avoir regardé dans le cache

Ajouté par Frédéric Péters il y a plus de 6 ans. Mis à jour il y a plus de 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Josué Kouka
Version cible:
-
Début:
09 novembre 2017
Echéance:
% réalisé:

100%

Temps estimé:
Patch proposed:
Oui
Planning:

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

Révision 83120c46 (diff)
Ajouté par Josué Kouka il y a plus de 6 ans

family: don't force async cell rendering (#19996)

Historique

#1

Mis à jour par Josué Kouka il y a plus de 6 ans

#2

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.

Bon en vrai c'est nul cette méthode get_family_json qui modifie des trucs dans passerelle avec des GET, faudrait trois fonctions:
  • 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.

#3

Mis à jour par Josué Kouka il y a plus de 6 ans

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

Bon en vrai c'est nul cette méthode get_family_json qui modifie des trucs dans passerelle avec des GET, faudrait trois fonctions:
  • 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.

#4

Mis à jour par Josué Kouka il y a plus de 6 ans

Je rajoute des tests pour les vues family-link et family-unlink.

#5

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.

#6

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.

#7

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.

#8

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

Serghei Mihai a écrit :

Tu rajoutes 2 fonctions link_family et unlink_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ètre invalidate_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).

#9

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.

#10

Mis à jour par Josué Kouka il y a plus de 6 ans

Serghei Mihai a écrit :

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.

#11

Mis à jour par Serghei Mihai il y a plus de 6 ans

Ack

#12

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)

#13

Mis à jour par Frédéric Péters il y a plus de 5 ans

  • Statut changé de Résolu (à déployer) à Fermé

Formats disponibles : Atom PDF