在 Django 中分析视图的最佳方法是啥?
Posted
技术标签:
【中文标题】在 Django 中分析视图的最佳方法是啥?【英文标题】:What is the best way to profile a view in Django?在 Django 中分析视图的最佳方法是什么? 【发布时间】:2009-12-28 17:18:48 【问题描述】:我使用 Django 开发了一个应用程序,一切正常,但我不知道幕后发生了什么。我想知道:
每个请求会访问数据库多少次? 每个查询的执行时间是多少? 渲染模板需要多长时间? 常规分析信息(ncalls,每个函数的总时间)。是否有可以安装的中间件来处理这个问题?哪些是分析我的观点的最佳做法?
谢谢
【问题讨论】:
【参考方案1】:三个字:Django Debug Toolbar
【讨论】:
看起来棒极了。我会测试它。谢谢!【参考方案2】:除了性能分析之外,满足您所有要求的一个项目是出色的django debug toolbar。
对于标准分析,您需要使用repoze.profile(这意味着您必须运行带有 WSGI 接口的 Django,例如 mod_wsgi)。
如果您是铁杆并需要调试内存泄漏,请使用dozer(也是一个 WSGI 组件)。
【讨论】:
【参考方案3】:% if debug %
<div id="debug">
<h2>Queries</h2>
<p>
sql_queries|length Quer sql_queries|pluralize:"y,ies"
% ifnotequal sql_queries|length 0 %
(<span style="cursor: pointer;" onclick="var s=document.getElementById('debugQueryTable').style;s.display=s.display=='none'?'':'none';this.innerhtml=this.innerHTML=='Show'?'Hide':'Show';">Show</span>)
% endifnotequal %
</p>
<table id="debugQueryTable" style="display: none;">
<col ></col>
<col></col>
<col ></col>
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">SQL</th>
<th scope="col">Time</th>
</tr>
</thead>
<tbody>
% for query in sql_queries %<tr class="% cycle odd,even %">
<td> forloop.counter </td>
<td> query.sql|escape </td>
<td> query.time </td>
</tr>% endfor %
</tbody>
</table>
</div>
% endif %
Django Snippet: Template Query Debug
【讨论】:
【参考方案4】:对于 2019 年以上的人来说,django-debug-toolbar
仍然很棒,但请注意,大多数模板分析窗格在现代 Django 版本(2.0+)中都已损坏。
现在另一个不错的选择是django-silk
,它具有一些漂亮的时序曲线可视化和图形功能,而django-live-profiler
具有工作状态fork for Django v2.0+ here。
【讨论】:
以上是关于在 Django 中分析视图的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
在 Android Studio 中分析 Proguard 优化构建的最佳方式?
在独立的 Django 应用程序中进行新迁移的最佳方法是啥?
在没有索引视图的情况下,在 SQL Server 中创建复杂视图的最佳方法是啥?