2009-11-15 2 views
1

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

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

Каждый раз (примерно один раз в час) один из моих строк просто исчезает. Пуф. Ничего в журналах.

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

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

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

  • мерзавец толчок в то время как cronjob работает
  • некоторые каскадного удаления вытирает их
  • некоторый метод Джанго призывает удалить на исключение
+1

Общий ответ: «Это тайна, все в порядке». Я не думаю, что кто-то будет иметь представление об этом, не видя кода для задания cron и кода для модели. – hughdbrown

+0

Может ли быть, что, когда cronjob делает это, он не сохраняет какой-либо объект? Возможно, какое-то состояние вас не хватает. – Geo

ответ

1

Вы можете использовать django-logging с LOGGING_LOG_SQL = True, чтобы зарегистрировать весь SQL, чтобы вы могли видеть, есть ли какие-либо DELETE.

+0

Yay! Это было каскадное удаление. Спасибо! –

2

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

import sys, traceback 

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

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

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

Смежные вопросы