def task(order_id): order = Orders.objects.get(pk=order_id) cache, created = OrderIndexer.objects.get_or_create(order=order_id) cache.name = order.country_from_name # и так далее cache.save() del order del cache rs = Orders.objects.filter() for row in rs: task(row.id) del row
Грубо говоря вытягиваем из одной таблицы данные, агрегируем их в нужный вид и записываем в другую. Записей много. За время работы скрипт съедает более 1 гига оперативки. Попытки принудительно удалять объекты ничего не дают. Видно как постепенно размер потребляемой памяти растет, а по окончанию освобождается.
Скрипт вызывается из консоли, т.е. поведение прекрасно видно.