Django:池化 MySQL 数据库连接

Posted

技术标签:

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

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

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

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

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

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

Django MySQL 后端

    django-mysqlpool

应用级连接池

    with SQL Alchemy another with SQL Alchemy

还有一些补丁可用

    Django Patch

其他一些方法

    MySQL DB Connector

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

【问题讨论】:

Why doesn't django support connection pool?的可能重复 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

您的需求

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

我的建议

    在数据库级别

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

    在应用级别

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

    在网络服务器级别

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

希望能给你一些帮助。

【讨论】:

以上是关于Django:池化 MySQL 数据库连接的主要内容,如果未能解决你的问题,请参考以下文章

从 django app docker 连接到本地 mysql 数据库

python测试开发django-10.django连接mysql

Pycharm中的Django项目连接mysql数据库

Python(Django) 连接MySQL(Mac环境)

服务器重启后 django无法连接mysql数据库的解决方法

将 Django 连接到 VPS 上的 MySql 数据库