Утечка памяти в Django при связывании полей один на один - PullRequest
1 голос
/ 26 февраля 2010

У меня есть модель, которая содержит однозначные поля для других моделей. Я перебил метод сохранения, чтобы автоматически назначать эти однозначные поля. Проблема заключается в том, что всякий раз, когда я сохраняю эту модель, использование памяти увеличивается примерно на 450 Кб и никогда не освобождается. Метод сохранения выглядит следующим образом:

class Link(models.model):
   id = models.CharField(max_length=11, primary_key=True)
   fieldOne = models.OneToOneField(One, null=True, editable=False)
   fieldTwo = models.OneToOneField(Two, null=True,, editable=False)
   fieldThree = models.OneToOneField(Three, null=True,, editable=False)

   def save(self, *args, **kwargs):
       self.fieldOne = One.objects.get(id=self.id)
       self.fieldTwo = Two.objects.get(id=self.id)
       self.fieldThree = Three.objects.get(id=self.id)

       super(Link, self)save(*args, **kwargs)

Я полагаю, что утечка памяти происходит в строке при вызове objects.get (), так как, когда я комментирую, я не заметил увеличения использования mem.

1 Ответ

1 голос
/ 26 февраля 2010

Вы работаете с DEBUG? DEBUG имеет неприятные последствия для использования памяти.

Проверьте документы на утечки памяти:

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

...