在我的 Flask 应用程序中,我希望直接使用 pymongo。但我不确定为每个请求创建 pymongo 连接以及如何回收连接资源的最佳方法是什么。
我知道 pymongo 中的 Connection 是线程安全的并且具有内置池。我想我需要创建一个全局 Connection 实例,并使用 before_request 将其放入烧瓶 g。
在 app.py 中:
from pymongo import Connection
from admin.views import admin
connection = Connection()
db = connection['test']
@app.before_request
def before_request():
g.db = db
@app.teardown_request
def teardown_request(exception):
if hasattr(g, 'db'):
# FIX
pass
在 admin/views.py 中:
from flask import g
@admin.route('/')
def index():
# do something with g.db
它确实有效。所以问题是:
这是在烧瓶中使用 Connection 的最佳方式吗?
我是否需要在 teardown_request 中明确回收资源以及如何做?