-
Django多进程中的查询错乱问题
因为业务需要,写了一个多进程程序,但是发现查询结果错乱,比如在同一个进程里输出
Asset.object.get(ip=1.1.1.1).ip
发现输出的并不是1.1.1.1初步感觉是django底层用的musql_db这个库是进程不安全的,也就是不支持多进程操作,所以这种情况最好用多线程
-
关于mysql gone away的问题
一开始我以为是connections.close_all()函数导致的,如果在这句话前面查询出了一个对象,又执行这个关闭数据库链接的操作,然后再用这个对象执行一些修改或者需要联网的多表级联的操作会报错,其实不是的。在每一次需要联网操作的时候,如果发现没有这个链接,他会自动重新链接,不会报错
那什么情况下会报gone away这个错误呢?
子进程会fork父进程中的链接,但是这两个进程的计时不一样,mysql db中额外有一个计时器模块,来控制这些链接的终端与否,因为时间上对不上了所以会报错。(有待考证)
Django多进程中的查询错乱问题以及mysql gone away问题
最新推荐文章于 2024-04-30 00:03:25 发布