在Django中剖析视图的最佳方法是什么?
我用Django开发了一个应用程序,一切都运行得很好,但我不知道背后发生了什么。我想了解:
- 每次请求数据库被访问了多少次?
- 每个查询的执行时间是多少?
- 渲染模板花了多长时间?
- 常规的性能分析信息(每个函数的调用次数和总时间)。
有没有可以安装的中间件来处理这些问题?有哪些最佳实践可以用来分析我的视图性能?
谢谢
4 个回答
0
{% 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 width="1"></col>
<col></col>
<col width="1"></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 %}
2
有一个项目几乎满足你所有的需求,除了性能分析之外,那就是非常棒的 django debug toolbar。
如果你需要进行标准的性能分析,就得使用 repoze.profile(这意味着你需要在使用像 mod_wsgi 这样的 WSGI 接口运行 Django)。
如果你是个技术狂人,需要调试内存泄漏,可以使用 dozer(这也是一个 WSGI 组件)。
3
三个字:Django调试工具栏