Flask中是否存在应用程序范围的python变量?我想在用户和共享数据缓存之间实现一些原始消息传递。当然,可以通过数据库实现这一点,但我想知道可能存在无db且可能更快的方法。理想情况下,如果共享变量是一个实时python对象,但我的需求也会满足字符串和整数。
编辑:补充(非工作)示例
from flask import g
@app.route('/store/<name>')
def view_hello(name=None):
g.name = name
return "Storing " + g.name
@app.route("/retrieve")
def view_listen():
n = g.name
return "Retrieved: " + n
在尝试检索g.name时,会触发错误: AttributeError:'_ RequestGlobals'对象没有属性'name'
答案 0 :(得分:3)
我不确定这是不是一个好主意,但我一直在使用它在请求之间轻松共享数据:
class MyServer(Flask):
def __init__(self, *args, **kwargs):
super(MyServer, self).__init__(*args, **kwargs)
#instanciate your variables here
self.messages = []
app = MyServer(__name__)
@app.route("/")
def foo():
app.messages.append("message")
答案 1 :(得分:-7)
因为烧瓶0.10 flask.g
是可行的。
在早期版本中,flask.g存储在请求上下文中,并在请求之间清除。如果您使用的是旧版本,则应将应用级别内容存储在flask.current_app