我有非常简单的 django 应用程序:
模型.py:
class Product(models.Model):
name = models.CharField(max_length=1000, default="")
desc = models.TextField(default="")
视图.py:
from django.http import HttpResponse
from models import Product
def fetch(request):
for p in Product.objects.all()[:300000]:
pass
return HttpResponse("done")
我已经在 MySQL 数据库中加载了 300k 样本记录,关闭了调试settings.py
并尝试执行fetch
视图 - 完成后,django 仍然位于 700Mb 的 RAM 上
我知道它需要内存来获取所有这些 300k 对象,但是为什么在视图函数退出后它会保留它们呢?
再一次,我DEBUG=False
用 django dev web server 试过这个,也用uwsgi
它同样奇怪的行为。
PS 在 python2.6/2.7 Linux 64 位上使用 Django 1.4 和 1.5.4 验证