【问题标题】:Django: Pooling MySQL DB ConnectionsDjango:池化 MySQL 数据库连接
【发布时间】:2016-11-27 19:05:49
【问题描述】:

我有一个带有相当标准服务器堆栈的 Django 应用程序

  • 数据库后端:MySQL
  • WSGI 服务器:Gunicorn
  • 异步工作者类:Gevent

我希望 Django 汇集 MySQL 连接,而不是在每个请求上创建连接。

从 1.6 开始,Django 引入了 persistent connections,但也有 issues 带有异步工作者。

因此,需要不同的 MySQL 后端或应用级连接池。我读过其中的几本。其中一些是非常古老的文章。以下是一些:

Django MySQL 后端

  1. django-mysqlpool

应用级连接池

  1. with SQL Alchemy
  2. another with SQL Alchemy

还有一些补丁可用

  1. Django Patch

其他一些方法

  1. MySQL DB Connector

我真的很困惑,其中哪种方法是池连接的最佳方式?非常感谢任何帮助。

【问题讨论】:

标签: mysql django django-rest-framework connection-pooling


【解决方案1】:

这个项目仍然可以在 Django 1.9 上运行,并且对我们来说效果很好。

https://github.com/djangonauts/djorm-ext-pool

【讨论】:

    【解决方案2】:

    您的需求

    想要池 MySQL 连接而不是在其上创建连接 每一个请求。

    我的建议

    1. 在数据库级别

    表明你的应用程序是IO密集型,所以建议 是使用mysql conn pool。
    可能你可以使用第三方mysql pool

    1. 在应用级别

    在应用程序级别不使用连接池。但大多使用缓存 ,可能是redis缓存等,这个可以减去连接数。

    1. 在网络服务器级别

    在您的服务器中称为 WSGI Server 。它是轻量级的,所以不是 池化工具,你可以重构使用队列来增强连接 重复使用。或基于 Gevent 重构 event_queue

    希望能给你一些帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-03
      • 2015-10-02
      • 2012-06-15
      • 2019-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多