Jul*_*Lee 5 python global-variables flask web server
我想设置一个全局变量并将其用作各种功能的触发器。每个用户都有一个单独的全局变量。这用于跟踪以前的消息数据并进行对话。问题是如何为每个用户管理一个单独的全局变量?一旦我将它部署到服务器中,该应用程序就会运行。当我尝试更改全局变量时,此变量适用于每个用户,而不仅仅是触发其更改的单个用户。
我正在使用没有数据库的 python 烧瓶。
谢谢你。
为此,您不需要全局变量,而且说实话,您将来的任何时候都不需要它们,因为使用全局变量是一种不好的做法。详情请参考此链接,为什么全局变量是邪恶的?
现在谈到您的问题,您可能需要gFlask 模块来创建一个上下文,该上下文在来自同一用户的多个请求中持续存在。你可以这样做:
from flask import g
...
def get_messages():
messages = getattr(g, '_messages', None)
if messages is None:
g._messages = [] # to store messages you may use a dictionary
return g._messages
def add_message(message):
messages = get_messages()
messages.append(message)
setattr(g, '_messages', messages)
return messages
Run Code Online (Sandbox Code Playgroud)
请记住,为每个用户创建应用程序的不同线程,因此变量及其值都不会共享。因此,对于每个用户来说,都会有不同的g,但它会在同一用户的多个请求中持续存在。希望能帮助到你!
编辑:g对象是应用程序上下文的代理,不会在多个请求中持续存在。它在整个应用程序中持续存在单个请求。
| 归档时间: |
|
| 查看次数: |
14663 次 |
| 最近记录: |