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