在烧瓶应用程序中正确使用g

时间:2020-07-29 15:09:03

标签: python python-3.x flask

我是不熟悉烧瓶的人,正在尝试找出使用grequestcurrent_app的正确方法。还有什么时候不使用它们!

一个我想做的简单例子:

from db import DBClass

def route_handler():
  r = make_a_http_request()
  
  db = DBClass()
  db.store(r)

上面是我应该如何处理,导入数据库客户端并在我的主处理程序中使用它的方式。

我在其他地方看到的是:

### db.py
from flask import g

def get_db():
    if 'db' not in g:
        g.db = DBClass()
    return g.db

class DBClass:
  # ...


### route.py

from db import get_db

def route_handler():
  r = make_a_http_request()
  
  db = get_db()
  db.store(r)

为什么有人会选择选项2?从结构,性能或安全角度来看,这种方法有什么好处?

据我了解,g对每个请求都是新的,因此存储内容的时间很短。

0 个答案:

没有答案