Django与MySQL数据库长连接问题

本文介绍了作者在Django 1.4.3版本上实现与MySQL数据库长连接的过程中遇到的问题及解决方案,探讨了三种网上方案的不足,并提供了改进后的实现方式,包括连接池管理和处理MySQL的wait_timeout设置,以避免数据库连接被主动断开。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前段时间由于项目要求,需要在Django 1.4.3版本上实现跟MySQL数据库的长连接,因为是刚开始接触Django框架,对Django的源码也不是很熟,只能参考着网上的解决方案来一点点摸索,在此记录下解决过程中发现的一些问题和心得吧!

百度“Django 数据库长连接”主要能搜到三种解决方案,我参考这三种解决方案来实现的时候,发现都不能很好的解决Django跟MySQL数据库的长连接问题,不知道是我对这些解决方案理解有误,还是真的存在问题?在此列出我对这三种解决方案认为不合理的地方和我最终的解决方案吧!

网上方案一:

不关闭Django每次request中创建的DB connection,具体实现方案请参考:握瑜的专栏-Django实现数据库长连接

这种方案我测试的时候发现connection确实实现了长连接,但每次Django request的时候都会创建一个connection,其实下次request使用的connection是没有复用上次request的connection的,而是使用新创建的connection,随着request的增多,connection会越来越多,最终达到数据库连接的上限,这样实现的长连接就没有多大意义了。

网上方案二:

自己实现连接池管理,具体实现方案请参考:懒人居-让Django支持数据库长连接(可以提高不少性能哦)

这种方案我没有详细的看他实现的代码,大概了解应该是自己编码实现了一个类似pool来管理connection,我就直接按照上面的方案和源码拷贝到我的项目里测试了下,发现有报错,具体什么错误我没有详细推敲!各位大神可以尝试下!

网上方案三:

使用第三方pool来管理connection,具体实现方案请参考:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值