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 處理請求時收集資料並將此資料儲存在記憶體中。接著,當在瀏覽器中開啟皮膚時,它會獲取伺服器上的資料並顯示它。如果在瀏覽站點時看到過多的 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
-
在
setting.py
中進行如下配置新增 'djdt_flamegraph.FlamegraphPanel' 到皮膚中:DEBUG_TOOLBAR_PANELS = [ 'debug_toolbar.panels.versions.VersionsPanel', 'debug_toolbar.panels.timer.TimerPanel', ………………………… ………………………… 'djdt_flamegraph.FlamegraphPanel', ] 複製程式碼
-
啟動專案
python3 manage.py runserver --nothreading --noreload 0.0.0.0:8000 複製程式碼
-
效果:
正常情況應該是有火焰圖的,這可能是配置或者 windows 系統的原因,但是第三方皮膚外掛就是這麼新增使用的,如果使用了 MongoDB 資料庫,也有相應的第三方外掛用於觀察除錯:MongoDB panel for the Django Debug Toolbar
用途
主要有以下功能,功能根據自己的監控需求可以擴充套件
- 監控 sql 語句操作
- 監控 CPU 執行情況
- 靜態檔案使用情況
- 模板使用情況
參考
Django Debug Toolbar 1.10.1 documentation