写了一个抓app store数据的小爬虫。这玩意是为了配合原来的项目使用的,所以我直接用了该项目的django配置,为了使用数据库模块嘛。没想到还没跑多少数据我就发现爬虫的内存居然飙升到900MB+了。难道有什么bug会内存泄露?
我仔细看了一下代码,很简单的东西,多线程使用urllib获取app store数据,然后用django的db models把数据保存到数据库。看不出问题,只好直接动手了,首先把保存数据那块给屏蔽了;然后跑了一遍,完全木有内存泄露,仔细查看了一遍保存数据库的代码,完全木有问题。
没办法了,只好google “django models memory leak”,元凶终于付出水面,原来是我在本地由于开了django的DEBUG模式,所以django会把所有sql查询的数据都缓存起来。去掉debug模式就一切ok。
https://docs.djangoproject.com/en/dev/faq/models/#why-is-django-leaking-memory
Related posts:





Recent Comments