Django: отладка записей просто исчезает - PullRequest
1 голос
/ 15 ноября 2009

Итак, я вырываю свои волосы здесь, и, возможно, у кого-то есть понимание.

У меня есть cronjob, который зацикливается на всех моих Link объектах, делает некоторые вещи, может изменять свойства объекта и делает save(). Вот и все.

Время от времени (примерно раз в час) один из моих рядов просто исчезает. Пуф. Ничего в логах.

Итак, я пытаюсь добавлять отладочные операторы везде, но есть ли явные причины для исчезновения записи? Это единственный способ удалить запись, позвонив delete()?

Просто любые общие указания были бы замечательными, спасибо.

Некоторые идеи, которые у меня были:

  • git push во время работы cronjob
  • некоторые каскадные удаления стирают их
  • какой-то метод django вызывает delete для исключения

Ответы [ 2 ]

2 голосов
/ 15 ноября 2009

Вы можете переопределить метод delete в своем классе Link и получить дамп трассировки стека или зарегистрировать сообщение, чтобы увидеть, действительно ли это происходит в приложении Django.

import sys, traceback

def delete(self):
   super(Link, self).delete()

   try:
      assert False
   except AssertionError, e
      traceback.print_tb(file=sys.stdout)

Возможно, есть лучший способ получить и записать трассировку стека, но это первое, что пришло в голову.

1 голос
/ 15 ноября 2009

Вы можете использовать django-logging с LOGGING_LOG_SQL = True для регистрации всего SQL, чтобы вы могли видеть, происходит ли какое-либо УДАЛЕНИЕ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...