Projet

Général

Profil

Development #43228

cache sur les appels à /api/cards/@list

Ajouté par Frédéric Péters il y a presque 4 ans. Mis à jour il y a presque 4 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
22 mai 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Il y a :

    @cached_property
    def available_engines(self):
        all_engines = engines.get_engines()

mais ça attache juste l'info à l'instance, du coup une autre cellule recherche, ou dans un autre processus, va refaire les appels; et sur un déploiement multi-collectivité ça va être un appel HTTP par collectivité, devenir lourd.

Du coup je verrais également un cache à ce niveau,

        for key, service in wcs_services.items():
            card_models = get_wcs_json(service, 'api/cards/@list')

Cache via django.core.cache, pour se retrouver dans memcached et partagé.

(peut-être à cette occasion ajouter à la gestion de cache dans requests_wrapper.py la possibilité de retourner une info du cache arrivant à expiration, tout en tapant dans un thread la mise à jour de l'info du cache) (comme on a pour RemoteTemplate dans Hobo).


Fichiers

Révisions associées

Révision 518825f9 (diff)
Ajouté par Lauréline Guérin il y a presque 4 ans

search: don't search for engines on site indexation (#43228)

Historique

#1

Mis à jour par Lauréline Guérin il y a presque 4 ans

  • Assigné à mis à Lauréline Guérin
#2

Mis à jour par Lauréline Guérin il y a presque 4 ans

Après analyse, il s'avère que lors de l'indexation des pages d'un site (toutes les heures donc, et tout au même moment), si une page contient une cellule de recherche alors elle loade search_services.

=> il n'est pas nécessaire de taper sur w.c.s. pour l'indexation

#3

Mis à jour par Lauréline Guérin il y a presque 4 ans

  • Sujet changé de cache sur les appels à /api/cards/@list à Ne pas loader les search engines (et appeler w.c.s. pour récupérer formdata et cards) lors de l'indexation des pages d'un site
#4

Mis à jour par Lauréline Guérin il y a presque 4 ans

Je n'ai pas trouvé comment éviter d'appeler is_visible sur l'indexation d'une cellule (lorsqu'on recherche les placeholders de la page pour vérifier que la cellule est dans un placeholder actif).
Alors j'ai changé le comportement de SearchCell.is_visible: au lieu de builder la liste des services on regarde juste le contenu de _search_services - en espérant que ça soit juste.

J'en ai profité pour exclure quelques classes de cellules qui n'ont aucun contenu à indexer (méthodes render_for_search + get_external_links_data qui ne renvoient rien), ça boostera un tout petit peu l'indexation d'un site.
(cette exclusion n'est pas suffisante, si sur une page on a plusieurs cellules dont une SearchCell, alors lors du rendering pour chercher les placeholders on va appeler is_visible sur la cellule de recherche)

#5

Mis à jour par Frédéric Péters il y a presque 4 ans

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

ok,

#6

Mis à jour par Lauréline Guérin il y a presque 4 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit 518825f9a4faf827b82add33680c16bd2ee5d0da
Author: Lauréline Guérin <zebuline@entrouvert.com>
Date:   Fri May 22 16:09:31 2020 +0200

    search: don't search for engines on site indexation (#43228)
#7

Mis à jour par Frédéric Péters il y a presque 4 ans

  • Statut changé de Résolu (à déployer) à Solution déployée
#10

Mis à jour par Lauréline Guérin il y a presque 4 ans

  • Sujet changé de Ne pas loader les search engines (et appeler w.c.s. pour récupérer formdata et cards) lors de l'indexation des pages d'un site à cache sur les appels à /api/cards/@list

Formats disponibles : Atom PDF