Висит себе такой toolbar

Как у вас выглядит процесс разработки проекта на джанге? Как вы ведете отладку, а как профилирование? Вставляете print и изучаете консоль дев сервера? Вглядываетесь в лог SQL запросов, в котором зачастую трудно понять "а почему же так тормозит?!"? А может быть вы используете что-то другое?

Я вот до недавнего времени примерно все перечисленное и делал. Но в один прекрасный момент мне это надоело, и я решил все-таки потрогать зверька под именем django-debug-toolbar от Роба Хадсона. Отметив его галочкой "интересно" в свое время, у меня так и не доходили руки его поизучать предметно. Наконец-то я созрел.

Что это такое? Да просто панелька, которая висит вверху страницы, и где на вкладках можно найти подробнейшую информацию о том, как отработал весь стек джанги при генерации ответа на запрос. Посмотреть можно всё: начиная от параметров запроса и заканчивая статистикой использования кеша.

Debug Toolbar

Приложение совсем небольшое и легко устанавливается. Достаточно положить в PYTHON_PATH приложение debug_toolbar, добавить его в INSTALLED_APPS, прописать нужные мидлвари, так же не забыв указать себя в INTERNAL_IPS - вот в принципе и всё. Есть дополнительные настройки отображения панелей и деталей поведения тулбара, но они опциональны.

В основной комплект входят панели:

  • показ версии джанги
  • общее время генерации страницы
  • значения из settings.py
  • HTTP заголовки
  • Параметры запроса
  • Информация об использованных шаблонах при подготовки ответа. Будьте осторожны, эта штука долго рендериться сама по себе и не хило может замедлить отдачу страницы:-)
  • Лог SQL запросов с временем их выполнения
  • Информация об использовании кеша
  • Вывод стандартного питонячего модуля logging

Поотключав мне не очень интересные панели, я стал активно пользоваться тулбаром. Конечно, в процессе подмечал какие-то моменты, которые хотелось бы сделать по другому или добавить какой-то функциональности в уже имеющиеся панели.

Соверешнноя случайно, я набрел на форк тулбара от Девида Крамера. И к своему удивлению обнаружил, что все фичи которые мне хотелось добавить и все баги которые хотелось исправить - им благополучно добавлены и исправлены. Чудесно. И ещё как приятный бонус - небольшой редизайн. Так что рекомендую именно его форк. Он значительно удобнее и уж точно функциональнее "из коробки" чем прототип.

Хочу отметить так же, что на мой взгляд, одной из самой важной особенностью тулбара является - легкость добавления собственных панелей. Буквально сразу я придумал, какую панельку хотелось бы добавить и реализовал ее достаточно быстро. Понравилось. Все достаточно просто и в тоже время функционально. Но об этом поподробней в другой раз.

Пока что оставляю тех, кто еще не щупал тулбар с ним наедине - пробуйте. А от тех, кто им уже пользовался, хотелось бы услышать ваши впечатления.

Комментарии 14

  1. Иван Сагалаев написал:

    Так... А плохо-то что? Не бывает, чтобы плохо ничего не было.

    Вот то, что оно logging хавает -- это мне почему-то особенно приятно...

    Оставлен 05 Январь 2009 в 03:55
  2. Александр Кошелев написал:

    Так... А плохо-то что? Не бывает, чтобы плохо ничего не было.

    Ну даже не знаю... setup.py нет в пакете:-)

    А вообще главная проблема - почти все панели это хаки. Джанга в большинстве подсистем не предоставляет какого-то отладочного интерфейса, поэтому если хочется что-то где-то трассировать, то приходится манки-патчить:-( Но это скорей деталь реализации, а не недостаток.

    Оставлен 05 Январь 2009 в 13:18
  3. Иван Сагалаев написал:

    Я бы сказал, что это то, как в Питоне интерфейсы рождаются. Сначала люди протаптывают дорожки (манки-патчинг), а потом уже их асфальтируют (создание официальных интерфейсов).

    Оставлен 05 Январь 2009 в 14:17
  4. Роман написал:

    Спасибо за полезную информацию.

    Оставлен 06 Январь 2009 в 00:48
  5. Boo написал:

    Интересно, спасибо!

    Оставлен 06 Январь 2009 в 02:43
  6. Иван Маркеев написал:

    Спасибо, про форк я ничего не слышал...

    Оставлен 06 Январь 2009 в 18:03
  7. PACHA написал:

    Ого,да это в разы облегчает всё дело!Спасибо,буду пользовать!

    Оставлен 06 Январь 2009 в 23:24
  8. Сергей Белов написал:

    Саша, ты забыл про возможность пошаговой отладки с расстановкой брейкпоинтов в любой вменяемой IDE (например, в Eclipse + PyDev и Eric4 такая возможность есть).

    Оставлен 19 Апрель 2009 в 12:34
  9. Александр Кошелев написал:

    Только вот как я замечаю, использование IDE в питон мире как-то не очень широко распространено.

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

    Оставлен 19 Апрель 2009 в 13:43
  10. Сергей Белов написал:

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

    Оставлен 19 Апрель 2009 в 15:02
  11. Сергей Белов написал:

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

    Оставлен 19 Апрель 2009 в 15:03
  12. Александр Кошелев написал:

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

    Дебагер не покажет выполненные запросы к базе, не расскажет какие шаблоны были использованы или выведет статистику хитов кеша. Он лишь может помочь в исправлении каких-то алгоритмических проблем кода. Тулбар же гораздо более осведомлен о конечном приложении за которым он сделит и может оказаться значительно полезней и показать более детальную картину работы приложения.

    Причем практика внедрения неких framework/platform-specific отладочных инструментов широко распространена даже в тех технологиях, где IDE имею более широкое и даже основополагающее значение.

    Оставлен 19 Апрель 2009 в 15:55
  13. Vermus написал:

    Спасибо. Что-то он с jQuery.easing у меня не сдружился :(

    Оставлен 21 Апрель 2009 в 21:34
  14. Александр написал:

    Спасибо позновательно. А можно вопрос к знатокам, кто какое IDE пользуется под Python+Django?

    Оставлен 08 Август 2009 в 13:57