2017-01-01 2 views
0

Dans un projet Django, j'ai écrit un middleware qui effectue une opération pour chaque utilisateur de l'application.Temps de réponse élevé lors de la définition de la valeur du module de paramètres Django dans un middleware

J'ai remarqué que les ballons de temps de réponse jusqu'à si j'écris ce qui suit au début du module middleware:

import os 
os.environ.setdefault("DJANGO_SETTINGS_MODULE","myproject.settings") 

Il est à peu près 10 fois moins si je laisse de côté ces lignes. En tant que débutant, j'essaie de comprendre pourquoi il y a un écart important entre les temps de réponse respectifs. Un expert peut-il l'expliquer? Avez-vous déjà vu quelque chose comme ça?


p.s. Je sais déjà pourquoi je ne devrais pas modifier la variable d'environnement pour les paramètres Django dans un middleware, alors ne vous inquiétez pas à ce sujet.

Répondre

1

La raison sera probablement de faire quelque chose avec django rechargeant votre configuration de paramètres pour chaque requête plutôt qu'une fois par thread/processus de serveur (et donc, réinstanciant/connectant à votre base de données, cache, etc.). Vous voudrez le confirmer avec le profilage. Ce comportement dépend également très probablement du serveur d'applications que vous utilisez. Si vous voulez vraiment ce niveau de contrôle pour vos paramètres, il est beaucoup plus facile pour vous d'ajouter cette ligne à manage.py, wsgi.py ou quel que soit le fichier/script que vous utilisez pour lancer votre serveur d'applications.

P.S. Si vous savez déjà que vous ne devriez pas le faire, pourquoi le faites-vous?

+0

J'ai découvert récemment, donc exclu de mon middleware. Ensuite, j'ai remarqué que le temps de réponse global du serveur diminuait également, d'où ma question. p.s. Je cours gunicorn avec nginx comme proxy inverse. –