Джанго settings.py - PullRequest
       8

Джанго settings.py

0 голосов
/ 23 октября 2019

При входе в мой проект загружаются некоторые переменные среды settings.py, чтобы включить некоторые варианты поведения:

unit_id = settings.COMPANY

Когда другой пользователь, вошедший в систему, изменяет значение этой переменной через функцию, она отражаетдля всех остальных пользователей, которые уже активны:

settings.COMPANY = "coke"

, в этом случае все пользователи увидят «кокс» в настройках. КОМПАНИЯ. Я полагал, что это будет в памяти и будет применяться только к пользовательскому разделу, о котором идет речь, потому что я не записывал в физический файл.

Интересно, вот как Django обрабатывает переменные окружения settings.py:он распространяется динамически на все экземпляры, открытые всеми пользователями?

Эта переменная доступна из context_processors.py, ниже:


def units(request):
    unit_id = settings.COMPANY

1 Ответ

1 голос
/ 23 октября 2019

Вы не должны изменять настройки во время выполнения .

Это (главным образом), потому что Django ничего не знает о его времени выполнения, поэтому определенно возможно запускать несколько экземпляров одного и того жеУстановка Django. Изменение такого параметра не распространит его на другие процессы.

Интересно, так ли Django обрабатывает переменные среды settings.py: распространяется ли он динамически на все экземпляры, открытые всеми пользователями?

Джанго не запускает экземпляр для каждого пользователя. Существует один или несколько (если вы, например, используете что-то вроде gunicorn или если вы используете несколько серверов с балансировщиком нагрузки), которые прослушивают определенный порт.

Чтобы иметь некоторые изменяемые настройки, вы можете указать значение по умолчанию, но вы должны сохранить что-то вроде активной компании в базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...