私の 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
実際に動作します。質問は次のとおりです。
これはフラスコで接続を使用する最良の方法ですか?
Teardown_request で明示的にリソースを再利用する必要がありますか? また、その方法は?