在Django中分析视图的最佳方法是什么?

时间:2009-12-28 17:18:49

标签: python django optimization profiling

我使用Django开发了一个应用程序,一切正常,但我不知道幕后发生了什么。我想知道:

  • 为每个请求命中数据库的次数是多少次?
  • 每个查询的执行时间是多少?
  • 呈现模板需要多长时间?
  • 常规分析信息(ncalls,每个功能的tottime)。

是否有可以安装的中间件来处理这个问题?哪些是分析我观点的最佳做法?

由于

4 个答案:

答案 0 :(得分:2)

三个字:Django Debug Toolbar

答案 1 :(得分:2)

满足您所有要求的一个项目(分析除外)非常出色django debug toolbar

对于标准分析,您需要使用repoze.profile(这意味着您必须使用WSGI接口运行Django,例如mod_wsgi)。

如果您是硬核并且需要调试内存泄漏,请使用dozer(也是WSGI组件)。

答案 2 :(得分: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 %}

Django Snippet: Template Query Debug

答案 3 :(得分:0)

对于2019年以后到达的人们来说,django-debug-toolbar仍然很棒,但是就像平时一样,大多数模板分析窗格在现代Django版本(2.0+)中都是坏的。

如今,django-silk是另一个不错的选择,它具有一些漂亮的时序配置文件可视化和图形功能,并且django-live-profiler具有有效的fork for Django v2.0+ here