django中使用mysql偶尔会出现数据库连接丢失的情况

问题

我们在进行多线程操作连接数据库的时候,通常会挂起一个mysql连接,如果客户端使用一个连接查询多次数据库,如果连续查询则没有问题,如果查询几次后停顿超过wait_timeout后再次查询就会出现数据库连接丢失,报错;

解决:

调用django.db.close_old_connections()后再次查询就没有错误了。 那么我们要避免此错误就要执行每个数据库查询前调用
  1. 一般情况不会出现此类问题,因为一个请求中不间断进行数据库查询,无需每个请求调用此方法,杞人忧天。
  2. 有时候一个请求中数据量较大,会查询数据库后进行一段时间其他(不涉及数据库)处理,比如先查询一些数据,然后将数据处理、生成excel、保存文件并生成url。已知此过长需要非常长时间,那么最终url保存数据库就最好先调用django.db.close_old_connections()防止连接丢失

所以我们在挂起一个多线程的时候进行数据库操作就要注意这个问题,防止连接丢失再去查询数据库就会使程序出错。

这样查询前执行django.db.close_old_connections()就能避免错误了;

参考:https://my.oschina.net/watcher/blog/2994509

原文地址:https://www.cnblogs.com/JahanGu/p/14236891.html