django中使用数据库连接池

数据库连接池的概念

据库连接池(Connection pooling)是程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对池中的连接进行申请,使用,释放。

创建数据库连接是一个很耗时的操作,也容易对数据库造成安全隐患。所以,在程序初始化的时候,集中创建多个数据库连接,并把他们集中管理,供程序使用,可以保证较快的数据库读写速度,还更加安全可靠。

假设网站一天有很大的访问量,数据库服务器就需要为每次连接创建一次数据库连接,极大的浪费数据库的资源,并且极易造成数据库服务器内存溢出、拓机。

数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现的尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标.数据库连接池正式针对这个问题提出来的.数据库连接池负责分配,管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个。

Django中使用数据库连接池的流程

安装

pip install djorm_ext_pool

配置settings

INSTALLED_APPS=[
    ...,
    djorm_pool,
    ...,
]

DJORM_POOL_OPTIONS = {
    "pool_size": 20,
    "max_overflow": 0,
    "recycle": 3600, # the default value
# 其中DATABASE_WAIT_TIMEOUT为你定义的连接超时时间,
# 必须小于等于mysql里面的wait_timeout()
}

可能出现的要修改的BUG

$virtualenv_path/Lib/site-packages/djorm_pool/__init__.py 52行附近,做出如下修改。

def patch_mysql():
    class hashabledict(dict):
        def __hash__(self):
            # return hash(tuple(sorted(self.items())))            
            return hash(frozenset(self))

版权声明:除特别注明外,本站所有文章均为王晨曦个人站点原创

转载请注明:出处来自王晨曦个人站点 » django中使用数据库连接池

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注