首页 > 其他 > 详细

第三方程序调用django的models遇到的问题

时间:2016-01-15 13:04:25      阅读:601      评论:0      收藏:0      [点我收藏+]

用python写了个守护进程调用django的models定时去查询数据库信息

后来发现进程运行之后内存持续增长,怀疑是内存泄漏,于是google一下,发现了两个有用的库 gc和objgraph



在可疑处代码中引入

import gc
import objgraph

### 强制进行垃圾回收
gc.collect()

### 打印出对象数目最多的 50 个类型信息
objgraph.show_most_common_types(limit=50)

查看输出发现dict类型的对象持续增长


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

dict                                 5154

dict                                 5172

dict                                 5190

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()




本文出自 “网络收藏夹” 博客,请务必保留此出处http://liyaoyi.blog.51cto.com/442933/1735239

第三方程序调用django的models遇到的问题

原文:http://liyaoyi.blog.51cto.com/442933/1735239

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!