Flask-SQLAlchemy关闭连接

nic*_*ted 2 postgresql sqlalchemy flask flask-sqlalchemy

我正在使用PostgreSQL和Flas-SQLAlchemyFlask扩展名。

#app.py

app = Flask(__name__)
app.config['SQLALCHEMY_POOL_SIZE'] = 20
db = SQLAlchemy(app)
Run Code Online (Sandbox Code Playgroud)

#views.py

user = User(***)
db.session.add(user)
db.session.commit()
Run Code Online (Sandbox Code Playgroud)

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

您必须提交会话,但不必在请求结束时将其删除,Flask-SQLAlchemy会为您完成该操作。

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

SELECT * FROM pg_stat_activity;
Run Code Online (Sandbox Code Playgroud)

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

dav*_*ism 5

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