This document discusses several Python debugging and monitoring tools for Django projects: django-debug-toolbar for debugging, django-devserver for profiling, Gargoyle for feature flags, Sentry for error reporting, and references for further information. It provides installation instructions and examples of configuring and extending the tools.
14. • SQL Queries (Realtime and Summarized)
• Profiling (Execution time, Memory Usage)
• Cache usage summary
• Ajax requests
• Session information
• Write your own!
Friday, July 15, 2011
15. class AjaxDumpModule(DevServerModule):
"""
Dumps the content of all AJAX responses.
"""
logger_name = 'ajax'
def process_response(self, request, response):
if request.is_ajax():
self.logger.info(response.content)
Friday, July 15, 2011
16. Extending the Toolbar
DEVSERVER_MODULES = (
'devserver.modules.sql.SQLSummaryModule',
'devserver.modules.ajax.AjaxDumpModule’,
'devserver.modules.profile.ProfileSummaryModule',
'devserver.modules.request.SessionInfoModule',
'devserver.modules.profile.MemoryUseModule',
'devserver.modules.profile.LeftOversModule',
'devserver.modules.cache.CacheSummaryModule',
)
Friday, July 15, 2011
21. # settings.py
MIDDLEWARE_CLASSES = (
'sentry.client.middleware.SentryResponseErrorIdMiddleware',
)
# 500.html
<p>Sorry friends, something’s not working.</p>
{% if request.sentry.id %}
<p>If you need assistance, you may reference this error
as <strong>{{ request.sentry.id }}</strong>.</p>
{% endif %}
Friday, July 15, 2011
27. from gargoyle import gargoyle
def my_view(request):
if gargoyle.is_active('awesome', request):
return 'new happy version :D'
else:
return 'old sad version :('
Friday, July 15, 2011
28. class HostConditionSet(ConditionSet):
hostname = String()
def can_execute(self, instance):
return instance is None
def get_field_value(self, instance, field_name):
if field_name == 'hostname':
return socket.gethostname()
gargoyle.register(HostConditionSet())
Friday, July 15, 2011