【问题标题】:Flask-SQLAlchemy close connectionFlask-SQLAlchemy 关闭连接
【发布时间】:2015-07-28 08:58:51
【问题描述】:

我正在为 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 错误。

【问题讨论】:

  • 不能代表 Flask,但连接池的意义在于保持一些连接打开,以确保为每个事务打开新连接的开销。

标签: postgresql flask sqlalchemy flask-sqlalchemy


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2019-12-28
    • 2015-09-11
    • 2015-05-16
    • 2019-03-30
    • 1970-01-01
    • 1970-01-01
    • 2015-03-10
    • 2019-12-13
    • 2013-04-03
    相关资源
    最近更新 更多