Jon*_*use 2 python postgresql sqlalchemy flask
我正在使用 PostgreSQL 作为 RDB,使用 Flask 和 sqlalchemy 开发应用程序。
我很好奇 PostgreSQL 在请求完成时不会拆除空闲事务。
以下是在 Flask 上拆解 PostgreSQL 事务的代码:
@app.after_request
def after_request(r):
db.dispose()
session.close()
Run Code Online (Sandbox Code Playgroud)
但我仍然可以看到 PostgreSQL 的空闲事务处理过程。
$ ps axu | grep postgres
postgres 18127 0.9 1.0 326348 6612 ? Ss 11:08 0:00 postgres: postgres mydb ::1(59013) idle
Run Code Online (Sandbox Code Playgroud)
如何在应用程序代码中终止该进程?
您看到的不是交易,而是没有开放交易的会话。
大多数系统都会汇集连接,以节省为每笔事务设置和拆除连接的成本。您很可能会看到 SQLAlchemy 端的池中持有一个连接,等待更多工作。
只要它在交易中不闲置就可以了。
要控制此行为,请调整 SQLAlchemy 的连接池。
检查pg_stat_activity更多细节,而不是依赖ps。
| 归档时间: |
|
| 查看次数: |
1723 次 |
| 最近记录: |