當前位置:
首頁 >
Django多进程中的查询错乱问题以及mysql gone away问题
發布時間:2025/5/22
16
豆豆
生活随笔
收集整理的這篇文章主要介紹了
Django多进程中的查询错乱问题以及mysql gone away问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
-
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问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python3高并发定时更新任务进程池和
- 下一篇: 使用Elasticsearch+file