`

django 性能优化方案

阅读更多
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]
0
1
分享到:
评论

相关推荐

    大型网站优化方案

    本优化方案主要关注以下几个核心领域:前端优化、后端优化、数据库优化、缓存策略、负载均衡以及性能监控。 一、前端优化 前端优化主要包括代码压缩、资源合并、图片优化、CDN(内容分发网络)利用以及异步加载等...

    django-3.2中文文档.zip

    在这里,你可以找到关于错误处理、性能优化、安全性和部署策略等多方面的解决方案。 5. **模板系统(templatebuiltins.js)** - 虽然文件名中包含“js”,但 Django 的模板语言是用于生成 HTML 的,与 JavaScript ...

    django基础教程

    十一、部署与性能优化 Django项目可以部署在各种Web服务器上,如Apache、Nginx等。通过配置缓存、Gunicorn或uWSGI等WSGI服务器,以及使用CDN等技术,可以提高应用的性能和响应速度。 本教程《Django基础教程》详细...

    django-redis组件

    然而,Redis 以其高速读写性能、丰富的数据结构以及分布式支持,成为了许多开发者首选的缓存解决方案。`django-redis` 实现了 Django 缓存框架的接口,使得开发者可以方便地将 Redis 作为缓存存储,存储视图、模板...

    django官方文档1.8

    - **性能优化**:提供了多种优化 Django 应用性能的方法。 - **序列化 Django 对象**:介绍了如何将 Django 对象转换为 JSON 或 XML 等格式。 - **Django 设置**:讲解了 Django 的配置选项及其用途。 - **信号**:...

    基于Django的教务信息管理系统源码

    在实际开发中,我们还需要关注系统的安全性和性能优化。Django提供CSRF(跨站请求伪造)防护和XSS(跨站脚本攻击)防护,保障了用户数据的安全。同时,通过缓存策略、数据库优化和异步任务处理,可以提高系统的响应...

    Django 1.2 E-commerce

    - **第7章:性能优化与部署** —— 提供一些关于性能优化和生产环境部署的建议。 本书适合有一定Python编程基础并对Web开发感兴趣的读者阅读。无论是想要从零开始学习Django还是希望深入掌握其在电子商务领域应用的...

    Django2.1完整手册-英文版

    此外,还会涉及Django开发流程、管理后台(Theadmin)等,并且会介绍Django的安全性问题、国际化和本地化、性能优化和地理框架。最后,也会讲解一些常见的Web应用开发工具、其他核心功能以及Django开源项目本身。 2...

    适用于django及基于django框架的项目中添加jaeger实现的middleware.zip

    Jaeger是另一个关键工具,它是Uber开源的分布式追踪系统,主要用于监控和性能优化。本教程将详细介绍如何在Django项目中集成Jaeger,以便利用其强大的追踪能力。 **一、Jaeger简介** Jaeger是基于OpenTracing API的...

    Django-Blog:使用Django制作博客

    10. **优化与扩展**:可以进一步优化博客性能,如使用缓存、CDN加速静态资源加载,还可以添加评论、分类、标签等功能,实现RSS订阅,甚至集成SEO优化和社交媒体分享。 通过以上步骤,你将拥有一个完整的Django博客...

    python Django web 实训项目的实验报告

    总结来说,本实训项目不仅涵盖了Django的基础使用,还涉及到Web开发中的常见问题和解决方案,如数据安全、页面交互、数据可视化和性能优化,为开发者提供了全面的实践平台。通过这样的项目,学生能够提升自己的...

    Django 官方文档中文 4.0 PDF版

    Django 官方文档中文 4.0 PDF 版本提供了详细的文档,涵盖了 Django 的所有方面,包括安装、配置、模型设计、视图函数、模板语言、表单处理、身份验证和授权、国际化和本地化、性能优化等。 知识点: 1. Django ...

    Django说明及示例

    - **性能优化**:通过缓存机制、数据库查询优化等方式提高应用性能。 #### 五、其他核心功能 ##### 1. 管理后台 - **自动生成管理页面**:为每个模型自动创建管理页面。 - **权限控制**:支持基于角色的权限控制。...

    Django项目.pdf

    性能优化与系统设计 - **首页静态化**:提高搜索引擎排名(SEO)。 - **MySQL主从同步**:提升读写性能,保证数据一致性。 - **前后端分离**:使用Vue.js进行局部刷新,提升用户体验。 - **Celery异步任务**:处理...

    Django-2.1.1.tar

    该版本引入了一些关键改进,包括性能优化和错误修复,以提供更稳定和高效的开发环境。 2. **URL配置**: Django 2.x引入了新的URL配置系统,使得URL配置更加简洁和易读。在Django 2.1.1中,你可以使用asgi模式运行...

    django-attachments

    通常,软件的更新迭代会带来性能优化、新特性的增加以及已知问题的修复。在这个版本中,可能包括了错误修复、用户体验的改进或者对 Django 新版本的支持。具体改动可以查阅该版本的发布说明,以获取更详细的信息。 ...

    django 2.1 doc

    - **性能优化**:提供了关于提高 Django 应用性能的方法和技术,如缓存策略、查询优化等。 - **地理框架**:介绍了 Django 对地理空间数据的支持,包括地理空间字段、空间查询功能等。 #### 五、常用 Web 应用工具...

Global site tag (gtag.js) - Google Analytics