2014-09-10 138 views
2

我想使用pgpoolpgbouncer作为我的烧瓶应用程序的外部连接池。 flask-sqlalchemy扩展似乎没有揭示将连接池更改为NullPool的方法。有没有办法做到这一点?如何在flask-sqlalchemy中禁用与PostgreSQL的连接池?

+0

为什么要禁用flask-sqlalchemy连接池?即使使用pgpool或pgbouncer(如果您不需要pgpool,我也会选择pgbouncer),但也建议使用本地连接池。只需将pgbouncer配置为基于事务的池,并且无论如何都无关紧要:) – Wolph 2014-09-10 15:11:19

+0

在我的情况下,pgbouncer与我的烧瓶应用程序在同一台机器上运行。因此,连接池两次似乎效率低下 - 一次在烧瓶应用程序中,一次在pgbouncer中。我期望创建一个到pgbouncer的本地TCP连接很快。例如 - https://github.com/kljensen/async-flask-sqlalchemy-example#warnings--lied-it-actually-does-block - 表明可以使用NullPool,但我不确定如何。 – donatello 2014-09-10 19:08:48

回答

2

尽管应该可以使用apply_driver_hacks方法,但我强烈建议您不要这样做。

本地机器上的TCP开销可以忽略不计,但认证和协商(例如编码)肯定不是。保持游泳池在Flask中始终有用,如果需要,可以使用SQLALCHEMY_POOL_SIZE,SQLALCHEMY_POOL_TIMEOUT,SQLALCHEMY_POOL_RECYCLE和进行配置。

如果你只是想减少开销(虽然完全可以忽略不计),你的一个实例Flask应用程序是连接到Postgres的唯一的东西,但从混合中删除PgBouncer/PgPool会更好。