Подтвердить что ты не робот

Переменные области применения в Flask?

Есть ли такая вещь, как переменные python для области приложения, в Flask? Я хотел бы реализовать некоторые примитивные сообщения между пользователями и общий кэш данных. Конечно, это можно реализовать через базу данных, но я хотел бы знать, может быть, есть db-бесплатный и, возможно, более быстрый подход. В идеале, если разделяемая переменная будет объектом live python, но мои потребности будут удовлетворены также строками и ints.

Изменить: дополнено (нерабочим) примером

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'

4b9b3361

Ответ 1

Я не уверен, что это хорошая идея или нет, но я использовал это, чтобы легко делиться данными между запросами:

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")

Ответ 2

Так как колба 0.10 flask.g была бы способ пойти.

В более ранних версиях flask.g хранится в контексте запроса и очищается между запросами. Если вы используете более старую версию, вы должны хранить свой контент уровня приложения в flask.current_app