如何在Flask和SQLAlchemy上完全关闭postgresql事务空闲?

时间:2015-08-24 02:13:28

标签: python postgresql flask sqlalchemy

我正在使用postgreSQL作为RDB开发带有flask和sqlalchemy的应用程序 我很好奇PostgreSQL在请求完成时没有拆除事务空闲。

这是关于烧瓶的拆解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

如何在应用程序代码中终止该过程?

1 个答案:

答案 0 :(得分:4)

您所看到的不是交易,它是没有开放交易的会话。

大多数系统池连接可以节省设置它们的成本,并为每个事务分解它们。很可能你在SQLAlchemy一侧看到了池中的连接,等待更多的工作。

只要它在交易中没有空闲就可以了。

要控制此行为,请tune SQLAlchemy's connection pool

检查pg_stat_activity以获取更多详细信息,而不是依赖ps