【问题标题】:Global variables in Python and Apache mod_wsgiPython 和 Apache mod_wsgi 中的全局变量
【发布时间】:2012-03-02 22:31:56
【问题描述】:

我知道存在框架,但我正在尝试直接使用 wsgi 来提高自己的理解。

我有我的 wsgi 处理程序,在顶部我声明了一个变量 i = 0

在我的application(environ, start_response) 函数中,我声明global i,然后在按下按钮时递增i

据我了解,只要服务器正在运行,该变量的状态就会被保留,因此网络应用程序的所有用户看到的都是相同的i

如果我在application 函数中声明i,那么在任何时候发出请求时i 的值都会重置为0。

我想知道,您如何在单个用户的请求之间保留i,而不是在不同用户的会话中保留它?因此,单个用户可以发布多个帖子,i 会增加,但如果另一个用户访问 Web 应用程序,他们会以 i=0 开头。

而且我知道您可以在帖子之间将i 存储在数据库中,但是是否可以在帖子之间仅将i 保留在内存中?

【问题讨论】:

标签: python apache mod-wsgi


【解决方案1】:

网络应用程序通常是“无共享”的。在 WSGI 的上下文中,这意味着您不知道您的应用程序(以及带有它的计数器)将被实例化多少次;该选择取决于充当应用容器的 WSGI 服务器。

如果你想要一些用户会话的概念,你必须明确地实现它,通常在 cookie 之上。如果你想要持久化,你需要一个明确支持它的组件;它可以是一个共享数据库,也可以搭载您的 cookie 会话。

【讨论】:

    【解决方案2】:

    添加 WSGI 会话 middleware 并存储这些值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-16
      • 1970-01-01
      • 2018-10-26
      • 1970-01-01
      • 1970-01-01
      • 2011-09-24
      相关资源
      最近更新 更多