博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django-debug-toolbar: django开发之性能强大的检测工具
阅读量:6175 次
发布时间:2019-06-21

本文共 1821 字,大约阅读时间需要 6 分钟。

django-debug-toolbar

介绍

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

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

调试与优化时,我们常常想知道比如以下问题:

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

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

安装

下载 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 文件添加:

from django.conf.urls import include, urlif 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 项目作为实验:

效果图如下:

运作与配置

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

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

可以在 setting.py 中的 DEBUG_TOOLBAR_CONFIG 中通过添加或者修改以下配置进行更改:

RESULTS_CACHE_SIZE : 10 (默认)复制代码

一些其他配置请参考:

第三方功能插件

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

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

比如使用火焰图定位 cpu 性能问题可以使用:

  1. 安装

  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 数据库,也有相应的第三方插件用于观察调试:

用途

主要有以下功能,功能根据自己的监控需求可以扩展

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

参考

转载于:https://juejin.im/post/5bf7b8e4e51d4552ba0c69c0

你可能感兴趣的文章
git
查看>>
关于点击率模型,你知道这三点就够了
查看>>
LintCode_372 在O(1)时间复杂度删除链表节点
查看>>
CCF NOI1073 放苹果
查看>>
I00031 Look-and-say sequence
查看>>
Project Euler Problem 19 Counting Sundays
查看>>
python 判断质数还是合数
查看>>
加快建设泛在电力物联网:万物互联 驶向数字经济蓝海
查看>>
OSGI企业应用开发(十一)Bundle资源获取途径
查看>>
使用HTML5拍照
查看>>
简单学生成绩管理系统
查看>>
Django表单集合Formset的高级用法
查看>>
写第一个jquery插件实录
查看>>
简单工厂
查看>>
[Java] 图说 注解
查看>>
No handlers could be found for logger "keystoneauth.identity.generic.base"
查看>>
查看完整的 Unicode 字符集
查看>>
sublime package control 被墙的解决方法
查看>>
JavaScript高级程序设计学习笔记--事件(二)(事件对象--DOM中的事件对象/IE中的事件对象/跨浏览器的事件对象)...
查看>>
软件工程的实践项目的自我目标
查看>>