Настройки в Django запускаются повторно при запуске сервера

#python #django #django-settings #django-3.2

Вопрос:

Я не знаю, почему мое приложение django работает settings/base.py 2 раза. Я думаю, что это заставило бы мое приложение замедлиться
В моем settings/base.py Я напечатал

 print('this is base_dir')
print(BASE_DIR)
 

выход есть:

 this is base_dir
F:7.DjangoBLOG_PROJECTsrc_blog
this is base_dir
F:7.DjangoBLOG_PROJECTsrc_blog
 

Это мой файл настроек:

     ├── settings 
    |     ├──__init__.py 
    |     ├──base.py 
    |     ├──dev.py 
    |     ├──prod.py
 

и мой settings__init__.py файл содержит:

 import os
from dotenv import load_dotenv
load_dotenv()

if os.environ['ENV_SETTING'] =='prod':
   from .prod import *
else:
   from .dev import *

from .base import *
 

Ответ №1:

Вероятно, это связано со старым добрым двойным потоком, появляющимся в Django. Способ настройки Django при запуске порождает два потока, поэтому один процесс предназначен для обработки запросов, а другой-для просмотра, изменили ли вы какой-либо код, чтобы он мог возродить первый.

Если вы напечатаете следующее в settings.py

 import os
print(os.getpid())
 

Вы увидите, что он печатает 2 разных значения. Насколько я знаю, это стандартное поведение джанго.

Комментарии:

1. Ну что ж! Так оно и было! Приятно это знать! Спасибо @AzyCrw4282!

2. @AzyCrw4282: Означает ли это, что это происходит только с сервером разработки, и что на рабочем сервере на каждого работника приходится один поток?

3. @физическая привлекательность Хороший вопрос. Хотя у меня нет производственных средств для проверки этого, я бы подумал, что это так.