2013-05-14 15 views
9

Ogni volta che inserisco un'istruzione (casuale) print da qualche parte come settings.py o qualsiasi file casuale .py in django, viene stampato due volte. Perché?Perché django esegue tutto due volte?

Prova questa:

dopo aver impostato il valore sul TEMPLATE_DIRS (in settings.py), è sufficiente aggiungere un comunicato stampa dopo che è: print TEMPLATE_DIRS

e avrete la vostra directory di modelli stampato due volte. O se ti senti vecchio stile, aggiungi subito print "Hello World subito dopo aver dichiarato TEMPLATE_DIRS e lo stamperà due volte.

Comando da eseguire: python manage.py runserver

risposta

20

non è in esecuzione due volte, è che si biforcano a 2 processi e ognuno di questi è in esecuzione una volta.

Risposta da: why is init module in django project loaded twice

Dovrebbe essere caricato solo una volta ... per processo. Sto indovinando che gestisce fork.py e che vengono avviati due processi separati.

e an article.

per verificare questo se si aggiunge questo alla vostra settings.py

import os 
print(os.getpid()) 

Si stamperà 2 diversi numeri di processo id mostrano che è generato 2 processi.

Si può leggere di più su forking on wikipedia.

Questo sembra anche un duplicato di:

django - settings.py seems to load multiple times?

+1

Ancora non rispondere perché. –

+0

è biforcuto @GamesBrainiac - 2 forchette quindi viene caricato e stampato due volte. – Ewan

+0

Scusa per sembrare davvero stupido qui, ma intendi, da esso viene "biforcato". –

Problemi correlati