第三方程序調用django的models遇到的問題

用python寫了個守護進程調用django的models定時去查詢數據庫信息python

後來發現進程運行以後內存持續增加,懷疑是內存泄漏,因而google一下,發現了兩個有用的庫 gc和objgraph數據庫



在可疑處代碼中引入django

import gc
import objgraph

### 強制進行垃圾回收
gc.collect()

### 打印出對象數目最多的 50 個類型信息
objgraph.show_most_common_types(limit=50)

查看輸出發現dict類型的對象持續增加bash


[root@localhost templates]# tailf /tmp/main.log|grep '^dict' ide

dict                                 5154google

dict                                 5172spa

dict                                 5190orm

dict                                 5208對象

dict                                 5226進程

dict                                 5244

dict                                 5262

dict                                 5280

dict                                 5298

dict                                 5316

dict                                 5334

dict                                 5352

dict                                 5370

dict                                 5388


繼續排查將一些代碼暫時屏蔽掉,最終鎖定在調用django的orm查詢部分,查庫的遊標沒被釋放引發的

在官方文檔https://docs.djangoproject.com/en/dev/faq/models/ 找到了方法


在每次定時查詢完成後調用reset_queries()釋放鏈接

from django.db import reset_queries
reset_queries()
相關文章
相關標籤/搜索