我正在使用 PostgreSQL 作为 RDB 使用 flask 和 sqlalchemy 开发应用程序。
我很好奇 PostgreSQL 不会在请求完成时拆除空闲事务。
这是拆解 Flask 上 PostgreSQL 事务的代码:
@app.after_request
def after_request(r):
db.dispose()
session.close()
但我仍然可以看到 PostgreSQL 的空闲事务处理。
$ ps axu | grep postgres
postgres 18127 0.9 1.0 326348 6612 ? Ss 11:08 0:00 postgres: postgres mydb ::1(59013) idle
如何在应用程序代码中终止进程?
最佳答案
您看到的不是事务,而是没有未完成事务的 session 。
大多数系统都汇集连接,以节省为每笔交易设置和拆除连接的成本。您很可能会看到一个连接保留在 SQLAlchemy 端的池中,等待更多工作。
只要它在事务中不空闲就没问题。
为了控制这种行为,tune SQLAlchemy's connection pool .
检查 pg_stat_activity
以获得更多详细信息,而不是依赖于 ps
。
关于python - 如何完全关闭 Flask 和 SQLAlchemy 上的 postgresql 事务空闲?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32173608/