在 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 中创建复杂视图的最佳方法是啥?

在 SwiftUI 中将绑定传递给导航堆栈中每个视图的最佳方法是啥

添加渐变作为视图顶层的最佳方法是啥?

在 ViewController 中创建选项卡视图的最佳方法是啥