Flask-SQLAlchemy 关闭连接

Flask-SQLAlchemy close connection

我正在使用 PostgreSQL 和 Flas-SQLAlchemy Flask 扩展。

#app.py

app = Flask(__name__)
app.config['SQLALCHEMY_POOL_SIZE'] = 20
db = SQLAlchemy(app)

#views.py

user = User(***)
db.session.add(user)
db.session.commit()

请注意,我没有按照文档的建议关闭连接:

You have to commit the session, but you don’t have to remove it at the end of the request, Flask-SQLAlchemy does that for you.

但是,当我 运行 以下 PostgreSQL 查询时,我可以看到一些 IDLE 连接:

SELECT * FROM pg_stat_activity;

这是否意味着我的 Flask-SQLAlchemy 没有关闭连接有问题?我很担心,因为最近我收到 remaining connection slots are reserved for non-replication superuser connections 错误。

SQLAlchemy 设置了一个连接池,出于性能原因,该连接池将保持打开状态。 PostgreSQL 有一个 max_connections 配置选项。如果超过该值,则需要降低池数或增加最大连接数。假定默认最大值为 100,并且您已将池设置为 20,则更有可能是其他应用程序打开了与同一数据库的连接。 max_connections 是全局设置,因此它必须考虑到连接到数据库服务器的所有应用程序。