我知道存在一些框架,但我正在尝试直接使用 wsgi 来提高我自己的理解。
我有我的 wsgi 处理程序,在顶部我声明了一个变量 i = 0
。
在我的 application(environ, start_response)
函数中,我声明了 global i
,然后在按下按钮时递增 i
。
据我了解,只要服务器正在运行,此变量的状态就会保留下来,因此网络应用的所有用户都会看到相同的 i
。
如果我在 application
函数中声明 i
,那么每次发出请求时 i
的值都会重置为 0。
我想知道,如何在单个用户的请求之间保留 i
,而不是在不同用户的 session 中保留它?因此,一个用户可以发布多个帖子,i
会递增,但如果另一个用户访问该网络应用程序,他们将从 i=0
开始。
而且我知道您可以在帖子之间将 i
存储在数据库中,但是是否可以在帖子之间仅将 i
保留在内存中?
最佳答案
Web 应用程序通常是“无共享”的。在 WSGI 的上下文中,这意味着您不知道您的应用程序(及其计数器)将被实例化多少次;该选择取决于充当应用程序容器的 WSGI 服务器。
如果您想要一些用户 session 的概念,您必须显式地实现它,通常是在 cookie 之上。如果你想要持久化,你需要一个明确支持它的组件;它可以是共享数据库,也可以搭载在您的 cookie session 上。
关于python - Python 和 Apache mod_wsgi 中的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9541301/