Являются ли глобальные переменные Django общими для всех пользователей или отдельных пользователей? - PullRequest
0 голосов
/ 27 июня 2018

Эй, это более общий вопрос.

Первая часть просто точно знает, как работают глобальные переменные. Если к серверу одновременно обращаются несколько пользователей, будет ли глобальная переменная использоваться всеми пользователями? или у каждого пользователя будет свой экземпляр этой глобальной переменной?

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

Спасибо!

1 Ответ

0 голосов
/ 27 июня 2018

Зависит от того, как вы развернете свое приложение. Например, Gunicorn по умолчанию будет загружать каждый рабочий процесс со своей собственной средой, но с --preload он будет загружать приложение и только после этого преформировать рабочих. Второй способ - глобальные переменные будут общими, но с ограничением: все общие переменные будут копироваться при записи, поэтому, если вы попытаетесь изменить глобальную переменную в рабочем процессе, эта переменная будет скопирована, и вы измените копию экземпляра. .

Отвечая на ваш второй вопрос. Вы не можете получить экземпляр запроса из любого места в Django, если он не передан непосредственно в функцию. Имейте в виду, что изменение глобальных переменных часто небезопасно.

...