提问者:小点点

这个代码中的g对象是什么?


我发现这段代码会给每个响应计时,但是我不确定g应该从哪里来。什么是g

@app.before_request
def before_request():
  g.start = time.time()

@app.teardown_request
def teardown_request(exception=None):
    diff = time.time() - g.start
    print diff

共1个答案

匿名用户

g是烧瓶提供的对象。它是一个全局命名空间,用于在单个应用程序上下文中保存所需的任何数据。例如,请求前的处理程序可以设置g.user,路由和其他功能可以访问该处理程序。

from flask import g

@app.before_request
def load_user():
    user = User.query.get(request.session.get("user_id"))
    g.user = user

@app.route("/admin")
def admin():
    if g.user is None or not g.user.is_admin:
        return redirect(url_for("index"))

应用程序上下文持续一个请求/响应周期,g不适合跨请求存储数据。使用数据库、redis、会话或其他外部数据源来持久化数据。

请注意,开发服务器和任何Web服务器都将在日志中输出定时信息。如果您真的想要配置代码,可以使用Werkzeug应用程序分析器。