1.最受不了的就是django和template了,可以说是,慢的不行了
解决方案是使用 jinja2 语法和django相似,性能很好,如图:
2.跟踪你的运行程序
2个方法 Profile 和 Sql跟踪,使用django.middleware方法实现:
cProfile 比Profile高效,代码如下
#encoding = utf-8
import sys
import cProfile
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:
self.profiler.create_stats()
out = StringIO()
old_stdout, sys.stdout = sys.stdout, out
self.profiler.print_stats("cumulative")
sys.stdout = old_stdout
response.content = '<pre>%s</pre>' % out.getvalue()
return response
Sql跟踪,代码如下
#encoding = utf-8
import sys
import cProfile
from cStringIO import StringIO
from django.conf import settings
from django.db import connection
from django.utils.encoding import smart_unicode
import logging
class DatabaseProfilerMiddleware(object):
def process_request(self, request):
pass
def process_response(self, request, response):
if settings.DEBUG and 'sql' in request.GET:
out = StringIO()
out.write('time\tsql\n')
total_time = 0
for query in reversed(sorted(connection.queries, key=lambda x: x['time'])):
total_time += float(query['time'])*1000
try:
out.write(u'<div>%s\t%s\n</div><hr />' % (smart_unicode(query.get('time')), smart_unicode(query.get('sql') ) ))
except Exception,e:
logging.error(e)
response.content = '<pre style="white-space:pre-wrap">%d queries executed in %.3f seconds\n\n%s</pre>' % (len(connection.queries), total_time/1000, out.getvalue())
return response
[/b]
分享到:
相关推荐
唐纳德·克努特(DonaldKnuth)曾经说过:“不成熟的优化方案是万恶之源。”然而,任何一个承受高负载的成熟项目都不可避免地需要进行优化。在本文中,我想谈谈优化Web项目代码的五种常用方法。虽然本文是以Django为...
在超大城市的管理中,如何应对人口密度增大所造成的拥挤、踩踏等事故是不可回避的问题。... 对于边缘端的CPU部署性能优化,我们采用Openvino+ONNX的方案,并同时提供各种大小尺寸的模型,以满足不同设备的算力限制。
自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...
自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...
自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...
自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...
运维工程师的工作涵盖了系统架构搭建、维护、优化,以及故障排查与解决等多个方面。 首先,运维工作包括基础设施的部署与配置,如服务器、网络设备、存储设备等硬件资源的安装调试与监控,同时还需要安装操作系统、...
自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...
自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...
###OpenStack大规模部署碰到的常见问题及其优化方法 ###OpenStack大规模部署案例及经验介绍 公有云经验分享 私有云经验分享 ###OpenStack云平台与其它几种云平台的比较 几种主流的开源云平台技术比较 几种主流云...
自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...
专辑图像针对性能进行了优化。 Django Photo Gallery Sample响应Swift且对移动/设备友好。 从Django管理面板创建相册 可以从Django管理面板中创建相册,其中应从PC中选择一个包含所有图像的zip文件。 Django摄影图库...
自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...
可扩展性:Python可以通过C/C++编写的扩展模块进行性能优化,同时也可以与其他语言进行集成。 丰富的社区支持:Python拥有庞大的开源社区,提供了大量的文档、教程、示例代码和解决方案,方便开发者学习和交流。 ...
Day91-100\93.MySQL性能优化.md Day91-100\94.网络API接口设计.md Day91-100\95.使用Django开发商业项目.md Day91-100\96.软件测试和自动化测试.md Day91-100\97.电商网站技术要点剖析.md Day91-100\98.项目部署上线...
2. **智能化**:通过机器学习算法,自动分析资产的使用情况和性能指标,为企业决策提供有力支持。 3. **可定制性**:采用模块化设计,用户可根据自身需求进行二次开发,满足特定业务场景的需求。 4. **安全性**:...