2015-08-24 51 views
1

我正在用flask和sqlalchemy使用PostgreSQL作为RDB开发应用程序。
我很好奇当请求完成时,PostgreSQL不会拆卸事务空闲。如何在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 

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

回答

3

你所看到的不是一个交易,而是一个没有公开交易的交易。

大多数系统池连接可以节省设置它们的成本,并为每个事务处理它们。很有可能您会看到SQLAlchemy一侧的池中存在连接,正在等待更多工作。

只要它不是空闲在交易这就好了。

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

查看pg_stat_activity了解更多详情,而不是依靠ps

相关问题