5

FirePython - нет print'ам?#

 3 years ago
source link: https://solovyov.net/blog/2008/firepython-no-prints/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

FirePython - нет print'ам?#

Когда я разрабатываю какое-то веб-приложение, то практически не пользуюсь разного рода отладчиками и всякими вспомогательными инструментами: в 90% случаев с головой хватает print variable для того, чтоб понять, в чём проблема. Ну, иногда я всё-таки делаю import pdb; pdb.set_trace(), в особо запутанных случаях.

Но тут буквально вчера мне показали пальцем на очень клёвую штуку - FirePython. Состоит эта штука из двух частей - небольшая либа на питоне и плагин к Firebug‘у. Этот тандем занимается очень полезным делом - показывает всё, что логается в питоновском коде1, в табе файрбага.

Штука невероятно удобная - теперь для разработки постоянно необходимы только два приложения: редактор и браузер, плюс не придётся высматривать вывод принтов в выводе runserver’а. Относительно обычного использования logging тоже хватает плюсов - как минимум не требуется следить за файлами и их путями (на создание которых может и не быть прав), к тому же сразу готов неплохой просмотрщик логов с возможностью фильтрации.

Я сегодня написал к файрпитону две миддлвари - джанговскую и WSGI, так что теперь его использование - вопрос пары движений. ;) Вкратце: надо установить сам плагин, который зависит от Firebug 1.3 (он ещё бета, но я и так использую Firefox 3.1, так что меня это не пугает :P). После этого сделать easy_install firepython. Как вариант: склонировать проект с гитхаба и положить каталог firepython из каталога python в sys.path или директорию проекта.

После этого надо просто включить миддлварь, дописав в MIDDLEWARE_CLASSES путь к ней: firepython.django.FirePythonDjango. Для использования в WSGI-приложениях есть аналогичная миддлварь: firepython.wsgi.FirePythonWSGI, которую можно использовать как и любую другую WSGI-миддлварь, оборачивая вокруг объекта приложения. :)

Использовать это в коде легко:

import logging
logging.debug('what you want to debug today?')

Логично, что вместо дебага можно использовать любой уровень - потом их можно фильтровать в морде FirePython’а.


  1. Ну не совсем всё, а только то, что логировалось в то время, пока FirePython был хендлером в logging. ↩︎


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK