django-debug-toolbar: django開發之效能強大的檢測工具

Lcanboom發表於2018-11-23

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, 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 專案作為實驗: 圖書館借還系統

效果圖如下:

django-debug-toolbar: django開發之效能強大的檢測工具

運作與配置

除錯工具欄分兩個階段工作。首先,它在 Django 處理請求時收集資料並將此資料儲存在記憶體中。接著,當在瀏覽器中開啟皮膚時,它會獲取伺服器上的資料並顯示它。如果在瀏覽站點時看到過多的 CPU 或記憶體消耗,則有必要考慮優化“收集”階段。如果顯示皮膚很慢,則有必要考慮優化“渲染”階段。

django-debug-toolbar 預設將在過去的 10 個請求期間收集的資料保留在記憶體中。

可以在 setting.py 中的 DEBUG_TOOLBAR_CONFIG 中通過新增或者修改以下配置進行更改:

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. 效果:

django-debug-toolbar: django開發之效能強大的檢測工具

正常情況應該是有火焰圖的,這可能是配置或者 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開發 – 滴滴雲部落格

相關文章