2

我有 Flask 应用程序,它看起来像这样:

from flask import Flask
app = Flask(__name__)
from pymongo import MongoClient

def get_db():
    c = MongoClient()
    return c.mydb

@app.route("/")
def hello():
    db = get_db()
    db.foo.find_one(...)
    ...

if __name__ == "__main__":
    app.run()

似乎它工作正常。但我不确定一件事。我在每个视图调用中创建一个 MongoClient 实例(并连接到 db)。但是我应该关闭连接吗?

也许我应该在每次视图调用后关闭连接,如下所示:

@app.before_request
def before_request():
    g.db = get_db()

@app.teardown_request
def teardown_request(exception):
    g.db.close()

你怎么处理这些东西?

4

1 回答 1

5

MongoClient内置了连接池支持,默认大小为 10。因此,您应该创建一个MongoClient保持打开状态并由所有视图调用共享的实例。

于 2013-01-28T16:25:00.053 回答