gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 21:37:53 24 4
gpt4 key购买 nike

在我的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

在 admin/views.py 中:

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

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

  1. 这是在 flask 中使用 Connection 的最佳方式吗?

  2. 我是否需要在 teardown_request 中显式回收资源以及如何回收资源?

最佳答案

我仍然认为这是一个有趣的问题,但为什么没有回应......所以这是我的更新。

第一个问题,我觉得在Flask中使用current_app更清晰。

在 app.py 中

app = Flask(__name__)
connection = Connection()
db = connection['test']
app.db = db

在view.py中

from Flask import current_app
db = current_app.db
# do anything with db

并且通过使用 current_app,您可以使用应用程序工厂创建多个应用程序作为 http://flask.pocoo.org/docs/patterns/appfactories/

关于第二个问题,我还在想办法。

关于python - 如何在 Flask 中为每个请求创建 pymongo 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11380777/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com