python - Python 和 Apache mod_wsgi 中的全局变量

标签 python apache mod-wsgi

我知道存在一些框架,但我正在尝试直接使用 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/

相关文章:

linux - 无法在 apache 网络服务器上查看图像

python - CherryPy 更改我的响应代码

python - Wagtail ModelAdmin 出现 list_filter 错误 : FieldDoesNotExist: Region has no field named 'p'

apache - 如何使用.htaccess使Apache不区分大小写?

apache - 如何使用 .htaccess 在除特定和/或一些特定文件/文件夹之外的所有内容上实现 ssl

python - 500 内部服务器错误 mod_wsgi apache "importerror: No Module named ' django'

python-2.7 - 如何杀死/停止 openshift 服务器进程以释放服务端口?错误 : "Address already in use"

python - 连接没有顶行的大文件 - python 或 bash?

python - 是否有相当于 "async with"的 try- except-finally

python - Django : extract a path from a full URL