From bd52b9e41984de686b70d82d775e29cc1109e2e4 Mon Sep 17 00:00:00 2001 From: Bridger Maxwell Date: Sun, 15 Jan 2012 16:47:22 -0500 Subject: [PATCH] Changed perfstats middleware to log sql queries --- perfstats/middleware.py | 52 +++++++++++++---------------------------- 1 file changed, 16 insertions(+), 36 deletions(-) diff --git a/perfstats/middleware.py b/perfstats/middleware.py index ac10b59a47..2e3bfa20b7 100644 --- a/perfstats/middleware.py +++ b/perfstats/middleware.py @@ -1,45 +1,25 @@ -import views, json, tempfile -import hotshot -import hotshot.stats +import views, json, tempfile, time from django.conf import settings +from django.db import connection -tmpfile = None -prof = None -isRunning = False -def restart_profile(): - global prof, tmpfile, isRunning - try: - oldname = tmpfile.name - except: - oldname = "" - if prof != None: - if isRunning: - prof.stop() - prof.close() - tmpfile = tempfile.NamedTemporaryFile(prefix='prof',delete=False) - prof = hotshot.Profile(tmpfile.name, lineevents=1) - isRunning = False - print "Filename", tmpfile.name - return (tmpfile.name, oldname) - -restart_profile() - -class ProfileMiddleware: +class ProfileMiddleware: def process_request (self, request): - global isRunning - if not isRunning: - prof.start() - isRunning = True - else: - print "Profiler was already running. Results may be unpredictable" - + self.t = time.time() print "Process request" def process_response (self, request, response): - global isRunning - if isRunning: - prof.stop() - isRunning = False + totalTime = time.time() - self.t + tmpfile = tempfile.NamedTemporaryFile(prefix='sqlprof-t=' + str(totalTime) + "-", delete=False) + + output = "" + for query in connection.queries: + output += "Time: " + str(query['time']) + "\nQuery: " + query['sql'] + "\n\n" + + tmpfile.write(output) + + print "SQL Log file: " , tmpfile.name + tmpfile.close() + print "Process response" return response