【问题标题】:How to disable connection pooling with PostgreSQL in flask-sqlalchemy?如何在 flask-sqlalchemy 中禁用与 PostgreSQL 的连接池?
【发布时间】:2014-11-04 05:22:56
【问题描述】:

我想使用 pgpoolpgbouncer 作为我的烧瓶应用程序的外部连接池。 flask-sqlalchemy 扩展似乎没有公开将连接池更改为NullPool 的方法。有没有办法做到这一点?

【问题讨论】:

  • 为什么要禁用 flask-sqlalchemy 连接池?即使使用 pgpool 或 pgbouncer(如果您不需要 pgpool,我会选择 pgbouncer),同时拥有本地连接池仍然是一个好主意。只需将 pgbouncer 配置为基于事务池,无论如何都无所谓:)
  • 就我而言,pgbouncer 与我的烧瓶应用程序在同一台机器上运行。因此,两次进行连接池似乎效率低下——一次在烧瓶应用程序中,一次在 pgbouncer 中。我希望创建到 pgbouncer 的本地 TCP 连接很快。例如 - github.com/kljensen/… - 建议可以使用 NullPool,但我不确定具体如何。

标签: postgresql sqlalchemy connection-pooling flask-sqlalchemy


【解决方案1】:

虽然 apply_driver_hacks 方法应该可以实现,但我强烈建议不要这样做。

TCP 开销在本地机器上可以忽略不计,但身份验证和协商(例如编码)肯定不是。在 Flask 中保持一个池总是有用的,如果需要,可以使用 SQLALCHEMY_POOL_SIZESQLALCHEMY_POOL_TIMEOUTSQLALCHEMY_POOL_RECYCLESQLALCHEMY_MAX_OVERFLOWsettings 进行配置。

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

【讨论】:

    猜你喜欢
    • 2013-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-26
    • 2015-12-26
    • 1970-01-01
    • 2012-03-10
    • 1970-01-01
    相关资源
    最近更新 更多