2013-05-14 3 views
9

Всякий раз, когда я помещаю в (случайный) оператор print где-то вроде settings.py или произвольный файл .py в django, он печатается дважды. Зачем?Почему django запускает все дважды?

Попробуйте это:

после установки значения на TEMPLATE_DIRSsettings.py), просто добавьте оператор печати после него: print TEMPLATE_DIRS

и вы получите ваш каталог шаблонов распечатывается дважды. Или, если вы чувствуете себя старомодным, просто добавьте print "Hello World сразу после объявления TEMPLATE_DIRS, и он напечатает его дважды.

Команда для запуска: python manage.py runserver

ответ

20

Это не работает дважды, это разветвление 2 процессов, и каждый из тех, кто работает это один раз.

Ответил: why is init module in django project loaded twice

Он должен быть загружен только один раз ... в процессе. Я предполагаю, что виджеты manage.py и запускаются два отдельных процесса.

и an article.

Чтобы убедиться в этом, если добавить это к вашему settings.py

import os 
print(os.getpid()) 

Он напечатает 2 разных номеров идентификатор процесса, показывая, что он породил 2 процесса.

Вы можете прочитать больше о разветвление on wikipedia.

Это также кажется дубликат:

django - settings.py seems to load multiple times?

+1

Еще не отвечает, почему. –

+0

он разветвлен @GamesBrainiac - 2 вилки, затем он загружается и печатается дважды. – Ewan

+0

Жаль, что здесь звучит действительно глупо, но вы имеете в виду, что он получает «раздвоенный». –

Смежные вопросы