11
votes

Comment faire du temps les requêtes Django

J'ai toujours utilisé la bibliothèque de Python's Bibliothèque à Time Mes petits programmes Python. Maintenant, je développe une application Django et je me demandais comment faire le temps de mes fonctions Django, surtout des requêtes.

Par exemple, j'ai un index défaire (demande) dans mes vues.py qui fait un tas de choses lorsque je charge la page d'index. Comment puis-je utiliser TimeIt pour cette fonction particulière sans modifier trop mes fonctions existantes?


0 commentaires

4 Réponses :


25
votes

Si votre projet Django est en débogage, vous pouvez voir vos requêtes de base de données (et fois) à l'aide de:

>>> from django.db import connection
>>> connection.queries


0 commentaires

6
votes

the Barre d'outils de débogage est ce que vous voulez, cela vous aide à faire chacune de vos questions. .

Alternativement que cet extrait fonctionne aussi.

http://djangosnippets.org/snippets/93/


1 commentaires

Nice, j'ai installé et configuré debug_toolbar, c'est une bonne fonctionnalité à avoir dès le départ.



2
votes

La meilleure façon que vous puissiez obtenir est d'utiliser Barre d'outils de débogage , vous allez également Obtenez des fonctionnalités supplémentaires pour l'optimisation de la requête, ce qui vous aidera à optimiser votre requête de DB.

Voici une autre solution, vous pouvez utiliser connexion.Quiseries . Cela retournera la commande SQL a été faite pour la commande qui a été exécutée juste avant la commande Connect.Quiseries . Vous pouvez la réinitialisation_Quiseries après avoir obtenu le temps de la requête précédente en utilisant réinitialiser () . Utilisation de RESET_QUERIES () n'est pas obligatoire.

Supposons que vous ayez un modèle nommé périphérique . Vous pouvez mesurer le temps de requête comme celui-ci: xxx


0 commentaires

0
votes

Quelqu'un trébuchant sur cette approche de la Sentry Checkout.

https: // github .com / Getentry / Sentry-Python / Blob / Master / Sentry_sdk / Intégrations / Django / __ Init __. Py # L476

Vous pouvez remplacer exécuter et exécuteur avec vos propres fonctions qui suivent le temps nécessaire à l'exécution pour retourner.

Une approche simple consiste à créer un gestionnaire de contexte personnalisé qui initie une minuterie et la sortie écrit la valeur finale de la minuterie à un tableau que vous y transmettez.

Ensuite, vous pouvez simplement vérifier le tableau.


0 commentaires