• 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

  • 相关阅读:
    MR 原理
    Hadoop yarn任务调度策略介绍
    Hadoop 新 MapReduce 框架 Yarn 详解
    Hadoop 架构与原理
    Linux-top命令详解
    硬中断与软中断的区别
    Protocol_BGP
    Protocol_ISIS
    20条Linux命令面试问答
    Protocol_OSPF
  • 原文地址:https://www.cnblogs.com/JahanGu/p/14236891.html
Copyright © 2020-2023  润新知