Python 在烧瓶中使用sqlalchemy触发连接池

Python 在烧瓶中使用sqlalchemy触发连接池,python,postgresql,flask,sqlalchemy,flask-sqlalchemy,Python,Postgresql,Flask,Sqlalchemy,Flask Sqlalchemy,我正在为我的服务器使用Flask+SQLAlchemy(DB是Postgres),我想知道连接池是如何发生的。我知道它在默认情况下是启用的,池大小为5,但我不知道我的代码是否触发了它 假设我使用默认的炼金术桥: db = SQLAlchemy(app) 然后使用该对象进行数据库调用,如 db.session.query(......) Alchemy如何在幕后管理连接池?它是否每次访问db.session时都会抓取一个新会话?这个对象何时返回到池中(假设我没有将其存储在局部变量中) 编写代码

我正在为我的服务器使用Flask+SQLAlchemy(DB是Postgres),我想知道连接池是如何发生的。我知道它在默认情况下是启用的,池大小为5,但我不知道我的代码是否触发了它

假设我使用默认的炼金术桥:

db = SQLAlchemy(app)
然后使用该对象进行数据库调用,如

db.session.query(......)
Alchemy如何在幕后管理连接池?它是否每次访问db.session时都会抓取一个新会话?这个对象何时返回到池中(假设我没有将其存储在局部变量中)

编写代码以最大化并发性和性能的正确模式是什么?如果我在一个串行方法中多次访问DB,每次使用DB.session是否是一个好主意

我无法找到这种方式的文档,所以我不知道幕后发生了什么(代码可以工作,但它会扩展吗?)


谢谢

您可以使用事件注册- 可以监视许多不同的事件类型,
签出
签入
连接

以下是建立新连接时打印的文档中的一个基本示例

from sqlalchemy.event import listen
from sqlalchemy.pool import Pool

def my_on_connect(dbapi_con, connection_record):
    print "New DBAPI connection:", dbapi_con

listen(Pool, 'connect', my_on_connect)

您遇到了什么具体问题?我不知道我的服务器在重载情况下会如何响应-多个并发请求会同时传入吗?他们会被正确对待吗?我是否会比必须的更多地将对象带到/返回到池中?池是否会扩展得更多?我正在使用Flask SQLAlchemy并获得70+并发连接,它工作得很好。这不一定能回答它是如何工作的。我知道它确实有效。我相信(可能是错误的)reddit使用了SQLAlchemy。如果你指的是SQLAlchemy如何处理会话,我认为它使用了SQLAlchemy。