小编map*_*ple的帖子

如何在Flask中为每个请求创建pymongo连接

在我的Flask应用程序中,我希望直接使用pymongo.但我不确定为每个请求创建pymongo连接以及如何回收连接资源的最佳方法是什么.

我知道pymongo中的Connection是线程安全的,并且内置了池.我想我需要创建一个全局的Connection实例,并使用before_request将它放入flask 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
Run Code Online (Sandbox Code Playgroud)

在admin/views.py中:

from flask import g
@admin.route('/')
def index():
    # do something with g.db
Run Code Online (Sandbox Code Playgroud)

它确实有效.所以问题是:

  1. 这是在烧瓶中使用Connection的最佳方法吗?

  2. 我是否需要在teardown_request中明确回收资源以及如何执行此操作?

python connection pymongo flask

7
推荐指数
1
解决办法
3811
查看次数

标签 统计

connection ×1

flask ×1

pymongo ×1

python ×1