Django:迭代没有缓存的查询集

Pau*_*jan 5 python django caching

我有一个愚蠢的简单循环

for alias in models.Alias.objects.all() :
    alias.update_points()
Run Code Online (Sandbox Code Playgroud)

但是看看django QuerySet,它似乎保留_result_cache了以前的所有结果.这是吃我的机器的演出和演出,最终一切都爆炸了.

我怎么能扔掉所有我不会关心的东西?

Dan*_*man 11

使用queryset的iterator()方法以块的形式返回模型,而不填充结果缓存:

for alias in models.Alias.objects.iterator() :
    alias.update_points()
Run Code Online (Sandbox Code Playgroud)

  • 当我使用你的电话时,它仍在咀嚼大量的RAM.:( (4认同)
  • 您是否尝试将DEBUG设置为False?请参阅http://docs.djangoproject.com/en/dev/faq/models/#why-is-django-leaking-memory这比使用迭代器更有帮助:) (3认同)