Exécuter du code lors de Django commence une FOIS seulement?

Je suis en train d'écrire un Django Middleware de la classe que je veux exécuter qu'une seule fois au démarrage, à l'initialisation de certains autres arbritary code. J'ai suivi la très belle solution posté par sdolan ici, mais le message "Hello" est sortie sur le terminal deux fois. E. g.

from django.core.exceptions import MiddlewareNotUsed
from django.conf import settings

class StartupMiddleware(object):
    def __init__(self):
        print "Hello world"
        raise MiddlewareNotUsed('Startup complete')

et dans mon Django fichier de paramètres, j'ai la classe inclus dans le MIDDLEWARE_CLASSES liste.

Mais lorsque je l'exécute à l'aide de Django runserver et demande une page, j'obtiens dans le terminal

Django version 1.3, using settings 'config.server'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Hello world
[22/Jul/2011 15:54:36] "GET /HTTP/1.1" 200 698
Hello world
[22/Jul/2011 15:54:36] "GET /static/css/base.css HTTP/1.1" 200 0

Des idées pourquoi "Hello world" est imprimé deux fois? Merci.

  • juste par curiosité, avez-vous compris pourquoi le code dans init.py est exécuté deux fois?
  • il sera exécuté deux fois sous runserver ... c'est parce que runserver première charges jusqu'à la apps pour les inspecter et puis en fait, le serveur démarre. Même sur autoreload de runserver le code est seulement une fois exec.
  • Wow, j'ai été ici.... alors, merci encore pour le commentaire de @Pykler, c'est ce que je me demandais.
InformationsquelleAutor Bob_94 | 2011-07-22