Django 全局变量是在所有用户之间共享还是在单个用户之间共享?

Are Django global variables shared across all users or individual users?

嘿,这是一个更笼统的问题。

第一部分只是了解全局变量的确切工作原理。如果多个用户同时访问服务器,全局变量是否会在所有用户之间共享?还是每个用户都有自己的全局变量实例?

我知道会话以及这可能是解决我问题的最佳答案,但是,我目前正在使用 Django FormWizard,它似乎无法访问 request,所以我无法使用会话。我不完全确定如何访问 request,所以如果有人知道如何访问,我将感谢您的帮助。

谢谢!

取决于您部署应用程序的方式。例如,Gunicorn 默认情况下会加载每个工作进程及其自己的环境,但是使用 --preload 它将加载应用程序,并且仅在该 prefork 工作进程之后加载。第二种共享全局变量的方式,但有一个限制:所有共享变量都将在写时复制,因此如果您尝试在工作进程中修改全局变量,该变量将被复制,您将修改实例的副本.

回答你的第二个问题。如果请求实例没有直接传递给函数,则无法从 Django 中所需的任何位置获取请求实例。修改全局变量通常不是线程安全的,请注意。