我正在从 XML 文件中导入记录,它正在消耗内存。我已经浏览了创建并删除了所有元素和子元素以清除内存的 XML ElementTree,但它仍然只是堆积起来。
我终于找到了解决方案,并希望在 SO 中为将来可能遇到相同问题的其他人提供此解决方案。当我偶然发现这个问题时,我正在网上搜索答案:Django MemoryError - How to work with large databases。我的 MemoryError 不是因为我的 Queryset 的大小,因为它们并没有那么大,但我想我还是会试一试。对于对象上的任何循环,我将所有 objects.all() 更改为 objects.all().iterator()。这并没有多大作用,因为我只循环了大约三组不同的对象,没有一个是巨大的。我不情愿地转向DEBUG=True
了DEBUG=False
settings.py ,它将内存使用量减少到几乎为零!来自 Django 文档:
"同样重要的是要记住,在打开 DEBUG 的情况下运行时,Django 会记住它执行的每个 SQL 查询。这在调试时很有用,但它会迅速消耗生产服务器上的内存。 "
这不是生产服务器,它是我的开发服务器。那么,由于所有执行的查询都存储了,它们在哪里以及如何获取它们?如果它们对调试很有帮助,为什么它们不更容易获得呢?