[CentralOH] Django Management Command Memory Usage

jep200404 at columbus.rr.com jep200404 at columbus.rr.com
Mon Jun 4 16:28:17 CEST 2012


How can I reduce the memory usage in a Django management command? 
I have some Django code like follows in a management program: 

class Command(BaseCommand):
...
    def handle(self, *args, **options):
        for record in Places.objects.all():
            if record.x and record.y:
                record.point = (
                    Point(float(record.x)/1000.,
                    float(record.y)/1000.))
            else:
                record.point = None
            record.save()
        django.db.connection.close()

In the settings.py file I have: 

DEBUG = False

Places has millions of rows. 
top reveals that the program is using 18.6 Gigabytes of memory. 
How can I reduce that memory usage? 
Am I neglecting to close or release something? 

The only dox I'm finding about memory use related to query sets 
advise to use iterators instead of converting to a list. 
I'm already following that advice, but I'm not finding 
further guidance about memory use about record modification. 

Since DEBUG is False, I've already heeding the following. 

   https://docs.djangoproject.com/en/dev/faq/models/#why-is-django-leaking-memory

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

I have found that the following might be nice, 
but doubt it addresses the memory issue. 

            record.save(update_fields=['point'])



More information about the CentralOH mailing list