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()

Seems it works fine. But I'm not sure about one thing. I create a MongoClient instance (and connection to db) in every view call. But should I close connection?

Maybe I should close connection after each view call, like this:

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

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

How do you handle this stuff?

4

1 に答える 1

5

MongoClientMongoClient接続プールのサポートが組み込まれており、デフォルトのサイズは 10 です。したがって、開いたままにし、すべてのビュー呼び出しで共有する 1 つのインスタンスを作成する必要があります。

于 2013-01-28T16:25:00.053 に答える