Flask-SQLAlchemy关闭连接

时间:2015-05-16 13:40:08

标签: postgresql flask sqlalchemy flask-sqlalchemy

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

#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()

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

  

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

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

SELECT * FROM pg_stat_activity;

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

1 个答案:

答案 0 :(得分:4)

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