2014-09-10 136 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會更好。