Development #17954
Performance de l'API datetimes des rendez-vous
0%
Description
Il peut facilement y avoir un grand nombre de rendez-vous (guichet ouvert 8 heures par jour, avec des slots de 30 minutes, cinq jours par semaine, avec possibilité de réservation 3 mois à l'avance → 12*5*8*2 = 960).
Faire un request.build_absolute_uri(reverse(...)) pour chacun de ces rendez-vous, ça peut faire mal.
Méthodo, ab -t 10, exécuté une fois pour chauffer la machine, résultat d'une deuxième exécution, pour un datetimes retournant 412 éléments :
Percentage of the requests served within a certain time (ms) 50% 186 66% 193 75% 198 80% 201 90% 206 95% 211 98% 214 99% 219 100% 219 (longest request) Finished 53 requests
Fichiers
Révisions associées
Historique
Mis à jour par Frédéric Péters il y a plus de 6 ans
- Fichier 0001-api-optimize-fillslot-endpoint-calculation-in-meetin.patch 0001-api-optimize-fillslot-endpoint-calculation-in-meetin.patch ajouté
- Statut changé de Nouveau à En cours
- Patch proposed changé de Non à Oui
Significatif :
Percentage of the requests served within a certain time (ms) 50% 82 66% 85 75% 87 80% 89 90% 93 95% 96 98% 108 99% 109 100% 114 (longest request) Finished 119 requests
Mis à jour par Thomas Noël il y a plus de 6 ans
Moi ça m'irait de ne pas utiliser '00000' qui peut légitimement faire partie de agenda.slug ("La rendez-vous des 100000 fourmis")
Mis à jour par Frédéric Péters il y a plus de 6 ans
- Fichier 0001-api-optimize-fillslot-endpoint-calculation-in-meetin.patch 0001-api-optimize-fillslot-endpoint-calculation-in-meetin.patch ajouté
Voilà avec la création d'un fake_event_pk qui vérifie qu'il ne se trouve pas dans le slug de l'agenda.
Mis à jour par Thomas Noël il y a plus de 6 ans
Je vais être tatasse, mais y'a pas que agenda.slug dans l'URL (build_absolute_uri)... j'imaginais plutôt quelque chose d'encore plus improbable, comme __event_id__
? Ou alors garder le 0%d mais vérifier son absence dans request.build_absolute_uri(reverse('api-fillslot', kwargs={'agenda_identifier': agenda.slug, 'event_pk': '0'}))
(Et aussi, avoir un else: raise
dans le for
?)
(je sais que je tatasse pour peu de chose, mais bon)
Mis à jour par Frédéric Péters il y a plus de 6 ans
- Fichier 0001-api-optimize-fillslot-endpoint-calculation-in-meetin.patch 0001-api-optimize-fillslot-endpoint-calculation-in-meetin.patch ajouté
J'imaginais l'event_pk comme étant \d et Django râler sur autre chose que des caractères mais non, c'est \w, et donc très bien event_id.
Mis à jour par Frédéric Péters il y a plus de 6 ans
- Statut changé de En cours à Résolu (à déployer)
commit f7db30cfccf9e9191fb38c90ef4e3246bbab88a1 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Thu Aug 10 09:25:14 2017 +0200 api: optimize fillslot endpoint calculation in meetings/datetimes API (#17954)
Mis à jour par Frédéric Péters il y a plus de 5 ans
- Statut changé de Résolu (à déployer) à Solution déployée
api: optimize fillslot endpoint calculation in meetings/datetimes API (#17954)