django-debug-toolbar: django开发之性能强大的检测工具

django-debug-toolbar

介绍

Django 是一个 Python 重量级 Web 框架。php

官网描述:Django 的使用可以容易的以更少的代码更快地构建更好的 Web 应用程序html

调试与优化时,咱们经常想知道好比如下问题:python

  • 执行了多少条 SQL 语句,花费的时间,每次每条语句查询的时间
  • 渲染页面的模板是哪些,渲染时间
  • 缓存是否影响性能

django-debug-toolbar 是一款很是强大的 Django 的性能检测工具git

安装

下载 django-debug-toolbar

pip install django-debug-toolbar
复制代码

修改 setting.py

保证开启 debug

DEBUG = True
复制代码

INSTALLED_APPS 中加入 debug-toolbar

INSTALLED_APPS = (
    ......
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'library.apps.libraryConfig',
    'debug_toolbar',
)
复制代码

添加中间件

MIDDLEWARE = [
    'debug_toolbar.middleware.DebugToolbarMiddleware',
     ...... 
     ......
]
复制代码

配置 URL

urls.py 文件添加:github

from django.conf.urls import include, url

if settings.DEBUG:
    import debug_toolbar
    urlpatterns = [
        url(r'^__debug__/', include(debug_toolbar.urls)),
    ] + urlpatterns
复制代码

运行项目

python3 manage.py runserver 0.0.0.0:8000
复制代码

这里我借用了 github 上的一个 Django 项目做为实验: 图书馆借还系统web

效果图以下:ajax

运做与配置

调试工具栏分两个阶段工做。首先,它在 Django 处理请求时收集数据并将此数据存储在内存中。接着,当在浏览器中打开面板时,它会获取服务器上的数据并显示它。若是在浏览站点时看到过多的 CPU 或内存消耗,则有必要考虑优化“收集”阶段。若是显示面板很慢,则有必要考虑优化“渲染”阶段。sql

django-debug-toolbar 默认将在过去的 10 个请求期间收集的数据保留在内存中。数据库

能够在 setting.py 中的 DEBUG_TOOLBAR_CONFIG 中经过添加或者修改如下配置进行更改:django

RESULTS_CACHE_SIZE : 10 (默认)
复制代码

一些其余配置请参考:Configuration — Django Debug Toolbar 1.10.1 documentation

第三方功能插件

django-debug-toolbar 容许加入第三方的面板。

目前提供了许多的插件可参考:Panels

好比使用火焰图定位 cpu 性能问题可使用:djdt-flamegraph: Flamegraphs for Django Debug Toolbar

  1. 安装 djdt_flamegraph

  2. setting.py 中进行以下配置添加 'djdt_flamegraph.FlamegraphPanel' 到面板中:

    DEBUG_TOOLBAR_PANELS = [
     'debug_toolbar.panels.versions.VersionsPanel',
     'debug_toolbar.panels.timer.TimerPanel',
     …………………………
     …………………………
     'djdt_flamegraph.FlamegraphPanel',
    ]
    复制代码
  3. 启动项目

    python3 manage.py runserver --nothreading --noreload 0.0.0.0:8000
    复制代码
  4. 效果:

正常状况应该是有火焰图的,这多是配置或者 windows 系统的缘由,可是第三方面板插件就是这么添加使用的,若是使用了 MongoDB 数据库,也有相应的第三方插件用于观察调试:MongoDB panel for the Django Debug Toolbar

用途

主要有如下功能,功能根据本身的监控需求能够扩展

  • 监控 sql 语句操做
  • 监控 CPU 运行状况
  • 静态文件使用状况
  • 模板使用状况

参考

Django Debug Toolbar 1.10.1 documentation

Django-debug-toolbar 的安装使用及捕获ajax请求的处理办法

Django + DebugToolbar构建全栈WEB开发 – 滴滴云博客

相关文章
相关标签/搜索