Simple debug middleware that uses pycallgraph to get a visual representation of the call graph, including number of calls and execution times.
Usage:
-
Replace myapp in the snippet with the name of your application and or adjust include and exclude according to your needs
-
Add CallgraphMiddleware to your middlewares in settings.py
-
Append ?prof to any URL in your application to trigger the callgraph creation
Each callgraph cerated will be named callgraph-timestamp.png. This is because multiple callgraphs will be created when a re-direction occurs for example.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | import time
import pycallgraph
from django.conf import settings
class CallgraphMiddleware(object):
def process_view(self, request, callback, callback_args, callback_kwargs):
if settings.DEBUG and 'graph' in request.GET:
filter_func = pycallgraph.GlobbingFilter(include=['myapp.*'],
exclude=['myapp.debug.*'])
pycallgraph.start_trace(filter_func=filter_func)
def process_response(self, request, response):
if settings.DEBUG and 'graph' in request.GET:
pycallgraph.make_dot_graph('callgraph-' + str(time.time()) + '.png')
return response
|
More like this
- Stuff by NixonDash 1 month ago
- Add custom fields to the built-in Group model by jmoppel 3 months, 1 week ago
- Month / Year SelectDateWidget based on django SelectDateWidget by pierreben 6 months, 3 weeks ago
- Python Django CRUD Example Tutorial by tuts_station 7 months ago
- Browser-native date input field by kytta 8 months, 3 weeks ago
Comments
Please login first before commenting.