2009-07-13 4 views
0

Je me demandais si je pouvais éliminer les appels de session django pour des vues spécifiques. Par exemple, si j'ai un formulaire de réinitialisation de mot de passe, je ne veux pas d'appel à la base de données pour vérifier une session ou non. Merci!Élimination de certains appels de session Django

+0

Pas vraiment une réponse à votre question, mais si vous êtes préoccupé par les performances de session, découpez l'homme du milieu et utilisez memcached. Alors ne vous inquiétez pas à propos des appels à la session. http://docs.djangoproject.com/fr/dev/topics/http/sessions/#configuring-the-session-engine –

+0

Y at-il un inconvénient à utiliser memcached plutôt que d'utiliser la base de données pour les sessions? – xtrahotsauce

Répondre

1

Les sessions sont chargées paresseusement: si vous n'utilisez pas la session lors d'une requête, Django ne la chargera pas.

Cela inclut request.user: si vous y accédez, il accède à la session pour trouver l'utilisateur. (Il charge paresseusement, aussi - si vous n'accédez pas à request.user, il n'accèdera pas non plus à la session.)

Donc, déterminez ce qui accède à la session et éliminez-la - et si vous le pouvez 't, au moins vous saurez pourquoi la session est tirée po

+0

Connaissez-vous un moyen de vérifier les appels de session sans utiliser quelque chose comme django-logging? C'est ce que j'utilise pour vérifier les appels SQL en ce moment et je ne sais pas si l'appel de session est pour django-logging ou pour l'application réelle. J'ai éliminé l'appel de session mais il semble toujours interroger. – xtrahotsauce

+1

Si cela ne vous dérange pas le piratage temporaire de la source Django (que je trouve généralement inévitable), éditez django.contrib.sessions.backends.base.SessionBase._get_session et faites-lui un backtrace quand il appelle load(). Cela vous indiquera rapidement qui déclenche les charges de session. –

Questions connexes