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

发布于 2024-08-16 18:08:59 字数 224 浏览 3 评论 0原文

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

  • 每个请求会访问数据库多少次?
  • 每个查询的执行时间是多少?
  • 渲染模板花了多长时间?
  • 常规分析信息(ncalls、每个函数的 tottime)。

有没有可以安装的中间件来处理这个问题?阐述我的观点的最佳做法是什么?

谢谢

I have developed an application using Django and everything is working fine but I don't know what's going on behind the scenes. I would like to know:

  • How many times the database is being hit for each request?
  • What was the execution time for each query?
  • How long it took to render the template?
  • Regular profiling info (ncalls, tottime per function).

Is there a Middleware to handle this that I could install? Which are the best practices to profile my views?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

昵称有卵用 2024-08-23 18:09:00

除了分析之外,满足您所有要求的一个项目是优秀的 django 调试工具栏< /a>.

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

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

The one project that meets all your requirements, with the exception of profiling, is the excellent django debug toolbar.

For standard profiling you need to use repoze.profile (which means you have to be running Django with WSGI interface such as mod_wsgi).

If you're hardcore and need to debug memory leaks use dozer (also a WSGI component).

墨洒年华 2024-08-23 18:09:00
{% 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 代码片段:模板查询调试

{% 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

国际总奸 2024-08-23 18:09:00

对于 2019 年以后的用户来说,django-debug-toolbar 仍然很棒,但需要注意的是,大多数模板分析窗格在现代 Django 版本(2.0+)中都被破坏了。

如今另一个不错的选择是 django-silk 它有一些漂亮的时序配置文件可视化和图形功能,以及 django-live-profiler 使用这里的 Django v2.0+ 分支

For people arriving in 2019+, django-debug-toolbar is still great, but just as a heads-up, most of the template profiling panes are broken in modern Django versions (2.0+).

Another good option these days is django-silk which has some beautiful timing profile visualization and graphing features, and django-live-profiler with a working fork for Django v2.0+ here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文