Django:汇集MySQL数据库连接

时间:2016-07-24 10:00:18

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

我有一个带有非常标准的服务器堆栈的Dja​​ngo应用程序

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

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

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

因此,需要不同的MySQL后端或应用程序级别连接池。我已经阅读了其中几个。其中一些是非常古老的文章。以下是一些:

Django MySQL后端

  1. django-mysqlpool
  2. 应用级连接池

    1. with SQL Alchemy
    2. another with SQL Alchemy
    3. 也可以使用一些补丁

      1. Django Patch
      2. 其他一些方法

        1. MySQL DB Connector
        2. 我真的很困惑这些方法中哪种方法是最好的联系方式?任何帮助都非常感谢。

2 个答案:

答案 0 :(得分:0)

这个项目仍适用于Django 1.9,对我们来说效果很好。

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

答案 1 :(得分:0)

您的需求

  

想要池连接而不是创建连接   每一个要求。   

我的建议

  1. in db level
  2.   

    表明您的应用程序 IO密集型,因此提案   是使用mysql conn pool。
    可能你可以使用第三方 mysql池

    1. 在应用级别
    2.   在应用程序级别

      没有使用连接池。但主要使用缓存   ,可能是redis缓存等,这可以减去连接数。

      1. 在网络服务器级别
      2.   

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

        希望这可以给你一些帮助。