Login

Profiling Middleware w/sorting

Author:
petrilli
Posted:
June 19, 2009
Language:
Python
Version:
1.0
Score:
2 (after 2 ratings)

Based very heavily on the middleware in this snippet. As with that one, append '?prof' to the URL to see profiling output instead of page output. The big change is that you can also pass an argument to control sorting.

For example, you can append '?prof=cumulative' to sort the results by the cumulative time consumed. See the documentation on the Stats class for all the options.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import cProfile
import os
import pstats
import tempfile
from cStringIO import StringIO

from django.conf import settings


class ProfilerMiddleware(object):
    def process_view(self, request, callback, callback_args, callback_kwargs):
        if settings.DEBUG and 'prof' in request.GET:
            self.profiler = cProfile.Profile()
            args = (request,) + callback_args
            return self.profiler.runcall(callback, *args, **callback_kwargs)

    def process_response(self, request, response):
        if settings.DEBUG and 'prof' in request.GET:
            (fd, self.profiler_file) = tempfile.mkstemp()
            self.profiler.dump_stats(self.profiler_file)
            out = StringIO()
            stats = pstats.Stats(self.profiler_file, stream=out)
            stats.strip_dirs()          # Must happen prior to sort_stats
            if request.GET['prof']:
                stats.sort_stats(request.GET['prof'])
            stats.print_stats()
            os.unlink(self.profiler_file)
            response.content = '<pre>%s</pre>' % out.getvalue()
        return response

More like this

  1. Template tag - list punctuation for a list of items by shapiromatron 1 month, 1 week ago
  2. JSONRequestMiddleware adds a .json() method to your HttpRequests by cdcarter 1 month, 2 weeks ago
  3. Serializer factory with Django Rest Framework by julio 8 months, 2 weeks ago
  4. Image compression before saving the new model / work with JPG, PNG by Schleidens 9 months ago
  5. Help text hyperlinks by sa2812 9 months, 4 weeks ago

Comments

Please login first before commenting.