Rendez votre application Django plus rapide

Voyons ensemble quels sont les points de ralentissement classiques d'une application Django

a marqué ce sujet comme résolu.
Auteur du sujet

Tout le monde se secoue ! :D

J’ai commencé (dimanche 16 février 2020 à 14h25) la rédaction d’un tutoriel au doux nom de « Rendez votre application Django plus rapide » et j’ai pour objectif de proposer en validation un texte aux petits oignons. Je fais donc appel à votre bonté sans limites pour dénicher le moindre pépin, que ce soit à propos du fond ou de la forme. Vous pourrez consulter la bêta à votre guise à l’adresse suivante :

Merci !

+0 -0

c’est bien de reprendre ces billet mais il faut changer un peu le texte :)

Dans cette série de billets nous nous baserons sur des applications utilisant Python / Django et une base de données SQL, certains exemples utiliseront Django REST Framework.

Je n’avais pas fais attention dans le billet, mais la phrase suivante m’ennuie :

le code deviendra tellement lent que cela dégrade l’expérience des utilisateurs

Ce n’est pas le code qui est lent mais bien l’application qui en résulte :D

Avant de tacler un problème de performance la première étape de s’assurer d’avoir un monitoring correct.

le mot "tacler" convient il ici ?

Pour être capable de monitorer les performances de votre application en production (ou dans n’importe quel environnement) on utilise généralement un

il manque un mot ici: d’après ton billet c’est APM :)

Le but de cet article n’est pas de comparer l’ensemble des solutions disponibles. après avoir longuement utilisé Newrelic je suis passé depuis deux ans à Datadog, dont l’utilisation est à mon sens plus simple.

Ce n’est plus un article. Il manque une majuscule après le point

Édité par Angelo

+0 -0

Cette réponse a aidé l’auteur du sujet

Encore moi: quelques détails

L’une des principales sources d’entrée sortie dans une application en avec Django est la base de données (avec le réseau, le disque et d’autres applications comme les caches, les files, etc.).

L’une des principales sources d’entrée/sortie dans une application avec Django est la base de données (avec le réseau, le disque et d’autres applications comme les caches, les files, etc.).

Imaginons que nous réalisons une API qui sera utilisée par un front-end pour créer l’âge de liste des produits:

l’âge de liste des produits ?

En effet en changeant du code qui utilise des objets a un code utilisant des dictionnaires

a un code => à un code

# Dans un autre fichier
def get_list_data_for_product():
    product = Product.objects.filter(...).first().only("color", "brand")
    return product.color, product.brand. product.human_variant_price_display

il me semble qu’il y ait des erreurs dans le return
return product.color, product.brand, product.human_variant_price_display()
non ?

Il est possible d’ajouter des tests qui évite que quelqu’un empire la situation dans le futur (cf prochain billet).

Ce n’est plus un billet :p

si on ajoute un timeout de 200ms a l’appel et que le service ne répond pas dans le temps imparti

a l’appel => à l’appel

Il y a donc des chances que vos performances en termes de réseau, CPU, RAM , etc. diffèrent.

soit différent.

En parcourant l’onglet SQL de la Toolbar vous pourrez voir quel ligne du code a généré une requête, ce qui est pratique car grâce à l’APM vous savez déjà quel (requête) est lente en production.

quelle requête

Cet onglet donne de nombreux détails comme le nom de la base utilisée (si vous utilisez plusieurs bases de données) et qu’elle requête a été répétée plusieurs fois

quelle requête

À noter tout de fois que cette extension n’est pas prévue pour la production

toutefois

nous avions solutionné ce problème en écrivant un test runner Sur mesure.

sur mesure (pas de majuscule)

En ajoutant quelque chose de similaire à votre codebase vous empêchera les tests de réaliser de vrais appels réseaux.

à reformuler

Cela veut évidemment dire que vous ne resterez plus les services externes ou API

resterez => testerez ?

L’idée derrière VCR est de réaliser l’appel une première fois pour de vrai, d’enregistrer le résultat sans un fichier nommé cadette

sans => dans
cadette => cassette

L’installation net la configuration de VCR peut ajouter un peu de complexité à votre projet

je n’ai pas compris, l’installation net la configuration … un mot manque ou mal orthographié mais je ne comprend pas

il faudra toujours trouver un peu solution manuelle pour d’autres protocoles

une solution manuelle

alors n’hésitez pas a me contacter

à me contacter

Pour moi, il manque pas mal de signe de ponctuation: tu as tendances à faire des phrases très longues sans virgules, ce qui rend difficile la lecture parfois.
Sinon bon tuto :)

Édité par Angelo

+0 -0
Auteur du sujet

Bonjour les agrumes !

La bêta a été mise à jour et décante sa pulpe à l’adresse suivante :

Merci @angelo j’ai pris tous tes commentaire en compte.

le mot "tacler" convient il ici ?

J’ai remplacé par "s’attaquer" :)

il me semble qu’il y ait des erreurs dans le return

Je ne pense pas car il s’agit d’une property.

Pour moi, il manque pas mal de signe de ponctuation: tu as tendances à faire des phrases très longues sans virgules, ce qui rend difficile la lecture parfois.

Merci pour ce retour, je vais refaire une lecture générale pour essayer de mieux rythmer le contenu.

Édité par Anto59290

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte