狼狼 发表于 2017-5-2 11:55:28

计算python代码和db运行时间的middleware

如果一个网页访问速度较慢或并发量较少时,我们需要我定位时间都花在哪里,下面是一个middleware来计算python代码和数据库运行时间:
python 代码

[*]from datetime import datetime  
[*]import os  
[*]import time  
[*]  
[*]from django.conf import settings  
[*]from django.db import connection  
[*]from django.template import Template, Context  
[*]  
[*]class TimeMiddleware(object):  
[*]    def process_request(self, request):  
[*]        request.META['page_render_start'] = time.time()  
[*]        return None  
[*]  
[*]    def process_response(self, request, response):   
[*]        t = Template(''' {{ stat }}            
[*]            ''')  
[*]        stat_fmt = 'Total: %.2f, Python: %.2f, DB: %.2f, Queries: %d'  
[*]        delta = datetime.now() - datetime.fromtimestamp(request.META.get('page_render_start'))  
[*]        total = delta.seconds + delta.microseconds / 1000000.0  
[*]        db = 0  
[*]        for query in connection.queries:  
[*]            db += float(query['time'])  
[*]        stat = stat_fmt % (total, total - db, db, len(connection.queries))  
[*]        print stat  
[*]        return response  

讲上面代码放入一个python文件,然后在项目的settings中注册这个middleware,你就可以知道消耗时间的地方。
页: [1]
查看完整版本: 计算python代码和db运行时间的middleware