Flask中的应用范围变量?

时间:2013-05-09 19:19:09

标签: python flask

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'

2 个答案:

答案 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