как создать соединение pymongo для каждого запроса в Flask

В моем приложении Flask я надеюсь использовать pymongo напрямую. Но я не уверен, как лучше всего создать соединение pymongo для каждого запроса и как восстановить ресурс соединения.

Я знаю, что Connection в pymongo является потокобезопасным -и имеет встроенный -пул. Думаю, мне нужно создать глобальный экземпляр Connection и использовать перед запросом _, чтобы поместить его в колбу 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

Это действительно работает. Итак, вопросы:

  1. Это лучший способ использовать Connection in flask?

  2. Нужно ли явно возвращать ресурсы в запросе на разборку _и как это сделать?

7
задан Paco 5 September 2013 в 16:39
поделиться