我開發了一個使用Django的應用程序,一切正常,但我不知道幕後發生了什麼。我想知道:什麼是在Django中剖析視圖的最佳方式?
- 爲每個請求命中數據庫多少次?
- 每個查詢的執行時間是多少?
- 呈現模板需要多長時間?
- 定期分析信息(ncalls,每個功能的總時間)。
是否有一箇中間件來處理這個,我可以安裝?哪些是描述我的觀點的最佳實踐?
感謝
我開發了一個使用Django的應用程序,一切正常,但我不知道幕後發生了什麼。我想知道:什麼是在Django中剖析視圖的最佳方式?
是否有一箇中間件來處理這個,我可以安裝?哪些是描述我的觀點的最佳實踐?
感謝
{% 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 %}
非常有趣,謝謝!我會嘗試。 – jbochi 2009-12-28 17:33:31
滿足您的所有需求,有分析之外的一個項目,是出色的django debug toolbar。
對於標準分析,您需要使用repoze.profile(這意味着您必須運行帶有WSGI接口的Django,例如mod_wsgi)。
如果你是硬核,並需要調試內存泄漏使用dozer(也WSGI組件)。
看起來太棒了。我會測試它。謝謝! – jbochi 2009-12-28 17:41:05