私は非常に単純なジャンゴアプリを持っています:
models.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 データベースに 30 万件のサンプル レコードをロードし、デバッグをオフにしてsettings.py
、実行されたfetch
ビューを試しました。完了後も、django は 700Mb の RAM に残っています。
これらの 300k オブジェクトをすべて取得するにはメモリが必要であることは理解していますが、ビュー関数が終了した後もそれらを保持するのはなぜですか?
繰り返しますが、私はDEBUG=False
django dev Web サーバーでこれを試しuwsgi
ましたが、同じ奇妙な動作もしました。
PSは、python2.6/2.7 Linux 64ビットの両方でDjango 1.4および1.5.4で検証済み