Django 调试工具 djangodebugtoolbar

2023年 1月 4日 46.7k 0

1. 关于 Django 的性能

Django 是一个 Python 写的 Web 应用框架。使用 Django ,可以非常简单、高效地开发复杂的数据驱动的网站。同时,Django 非常注重组件的重用性、可插拔、敏捷开发、DRY(Don’t Repeat Yourself)。从一定程度上讲,Django 是一个很适合做业务逻辑实现的应用框架。笔者曾经利用 Docker 做过一次 Django 的性能测试,得到的结论是在 intel i5-5300 2.3GHz,8GB 内存,SSD 配置的笔记本电脑上,Django 的读取 DB 接口的并发只有 360 次请求/秒。Django 牺牲性能,降低了学习成本,提高了开发效率。 通常,可以在如下几个方面优化 Django 的性能:

  • 数据库。 加缓存可能是最直接的方法,还可以优化查询语句
  • 模板。 Django 自带的模板比较慢,可以试试 Mako, Jinja2
  • Python。 升级到 Python 3,利用 Python 3 中的新特性,例如,asyncio

如何找出 Django 的性能瓶颈呢?可以关注如下几个方面:

  • 执行了多少条 SQL 语句
  • 有多少时间花费在数据库上
  • 执行了什么特殊的查询操作,每次查询花费多长时间
  • 这些查询是有什么代码生成的
  • 渲染页面都用到了哪些模板
  • 冷/热缓存是如果影响性能的

绝大部分的性能瓶颈是数据库部分,下面介绍 Django 的性能检测工具 django-debug-tools ,一个非常强大的 Django 性能检测工具。

2. django-debug-tools

2.1 安装

1
pip install django-debug-toolbar

2.2 配置

settings.py

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
INSTALLED_APPS = [
    # ...
    'django.contrib.staticfiles',
    # ...
    'debug_toolbar',
]
MIDDLEWARE = [
    # ...
    'debug_toolbar.middleware.DebugToolbarMiddleware',
    # ...
]

如果配置完,并没有显示 Panel ,那么你需要的是下面这个配置

1
2
3
DEBUG_TOOLBAR_CONFIG = {
    "SHOW_TOOLBAR_CALLBACK": lambda request: DEBUG,
}
url.py
```python
from django.conf import settings
from django.conf.urls import include, url

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

2.3 使用

重新启动 Django 工程,在页面右侧即可看到 Panel,提供各种参数的 Panel ,点击查看。

3. django-debug-panel

django-debug-toolbar 是一个不错的 Django 性能检测工具,但是 django-debug-toolbar 不能处理 Ajax 和非 HTML 请求。django-debug-panel 在 django-debug-toolbar 的基础上,提供了更好的单页面应用和 Ajax 请求的支持。

3.1 安装

1
pip install django-debug-panel

3.2 配置

首先,安装配置 django-debug-toolbar。settings.py

1
2
3
4
INSTALLED_APPS = (
    # ...
    'debug_panel',
)

使用 panel 的中间件,替换 toolbar 的中间件。middlewares.py

1
2
3
4
5
6
MIDDLEWARE_CLASSES = (
    ...
    # 'debug_toolbar.middleware.DebugToolbarMiddleware',
    'debug_panel.middleware.DebugPanelMiddleware',
    ...
)

安装 Chrome 插件 Django Debug Panel

3.3 使用

重启 Django 工程和 Chrome 调试面板。刷新页面,即可看到每个接口,对应的 SQL 等相关信息。

4. 第三方的 Panel

django-debug-toolbar 还拥有一些第三方的 Panel,可以非常方便的与其他 Python 性能检测工具集成使用。

4.1 Line Profiler

debug_toolbar_line_profiler.panel.ProfilingPanelLine Profiler 可以对函数进行逐行分析,主要用于 CPU 密集型性能检测。

4.2. Pympler

pympler.panels.MemoryPanelPympler 是一个用来查看,监控 Python 对象内存的一个开发工具。

5. 参考

  • https://github.com/recamshak/django-debug-panel
  • https://mozillazg.github.io/2015/09/high-performance-django-note-1.html
  • https://django-debug-toolbar.readthedocs.io/en/stable/
  • http://django-debug-toolbar.readthedocs.io/en/stable/panels.html

相关文章

KubeSphere 部署向量数据库 Milvus 实战指南
探索 Kubernetes 持久化存储之 Longhorn 初窥门径
征服 Docker 镜像访问限制!KubeSphere v3.4.1 成功部署全攻略
那些年在 Terraform 上吃到的糖和踩过的坑
无需 Kubernetes 测试 Kubernetes 网络实现
Kubernetes v1.31 中的移除和主要变更

发布评论