Django orm съедает память

В одном проекте столкнулся с ситуацией похожей на утечку памяти при выполнении запросов через django ORM.

Парсился большой сайт (несколько миллионов объявлений) и результаты записывались в базу. Через какое-то время задание падало с ошибкой "Out of memory". Поковырявшись обнаружил, что запущенная команда (management command) со временем потребляла все больше и больше помяти.

Проблема оказалась в не отключенном дебаге для проекта. Дело в том, что при DEBUG=True django сохраняет все выполненые запросы в памяти. Об этом написано в документации, но не сразу догадаешься куда копать, поэтому несколько часов было потрачено на поиски проблемы. Надеюсь этот пост поможет кому-нибудь не наступить на те же грабли.

It is also important to remember that when running with DEBUG turned on, Django will remember every SQL query it executes. This is useful when you’re debugging, but it’ll rapidly consume memory on a production server.

Ссылка на документацию https://docs.djangoproject.com/en/1.6/ref/settings/#std:setting-DEBUG

Ещё статьи

Завершена работа над сайтом компании "Хороший мастер"
Завершена работа над сайтом детской футбольной школы «Чемпион»
Реализация функционала "Войти как" в админке django
Обзор django-cms 3.0