Пока мой ноут еще жив, а читатели делают ставки, я решил перед сном еще расковырять django-debug-tolbar.
По сути все панели построены на хаках. Т.е. В архитектуре самого движка не закладывалась такая фишка. Т.е. К примеру берут класс BaseCache для из модуля django.core.cache.backends.base делают на его основе наследника, который делает тоже самое, только еще и считает. И заменяют полученный класс в модуле. Т.е. теперь там лежит «тулбарный» класс, и джанго для своей кухни будет брать его, а он уже будет делать свои «темные делишки».
Я для своего csvlog выкавырял оттуда только sql. Теперь я могу еще и вести лог всех запросов, проходящих в вашем апе, и говорить, сколько времени они съели. Сделал сразу компонентную структуру, почти как у этого самого тулбара, так что если что можете отключать.
А хак этот выглядит совсем не сложно:
-
from django.db.backends import util
-
import time
-
from csvlog.middleware import glog
-
class DatabaseStatTracker(util.CursorDebugWrapper):
-
def execute(self, sql, params=()):
-
start = time.time()
-
try:
-
return self.cursor.execute(sql, params)
-
finally:
-
stop = time.time()
-
glog.dbg(['__SQL__',stop-start,sql,unicode(params)])
-
util.CursorDebugWrapper = DatabaseStatTracker
Да, и я не тестил, но очень сильно подозреваю, что теперь кто-то из них двоих не сможет считать сюелины, и скорее всего тот, чей ап идет позже в INSTALLED_APPS.
PS: Забыл предварительно проверить свободное место на винте. Бедняга должен умереть свободным.



Recent Comments