首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何分析django应用程序的执行时间?

如何分析django应用程序的执行时间?
EN

Stack Overflow用户
提问于 2012-05-29 13:17:17
回答 5查看 10K关注 0票数 13

我的Django应用程序太慢了,我想弄清楚是什么需要时间:

我尝试了Django-debug-toolbar,但是找不到一个面板,它可以让我分出加载时间。

我的要求:

  • 为呈现页面而调用的每个模块具有执行时间的堆栈跟踪类型输出。
  • 我想知道整个页面呈现过程的哪一部分需要时间?
  • 另外,消耗多少CPU是最重要的部分?

django-debug-toolbar 能做到这一点吗?什么面板?

还有其他能做到这一点的django应用程序吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-05-30 05:55:22

最后找到了一种方法来分析我的django way应用程序:

下面的2条django片段提供了middleware,该代码段描述了整个流程,如果请求在GET keys中有prof,则输出:

  • http://djangosnippets.org/snippets/727/使用cProfile
  • http://djangosnippets.org/snippets/186/使用热门软件

简单而简单的剖析--拯救了我的生活!

票数 13
EN

Stack Overflow用户

发布于 2012-11-26 16:30:30

django-debug-toolbar 2.0

默认情况下,django-debug-toolbar 2.0在设置DEBUG_TOOLBAR_PANELS中包括'debug_toolbar.panels.profiling.ProfilingPanel'。您可以通过在工具栏中勾选“分析”复选框并刷新页面来查看此分析信息。

旧版本的django-debug-toolbar

您可以尝试django-debug-工具栏的分析面板(确保使用来自github的应用程序的最新版本)。在您的settings.py中像这样启用面板:

代码语言:javascript
复制
DEBUG_TOOLBAR_PANELS = (
  'debug_toolbar.panels.version.VersionDebugPanel',
  'debug_toolbar.panels.timer.TimerDebugPanel',
  'debug_toolbar.panels.profiling.ProfilingDebugPanel',
)

这个面板的存在并没有记录在django的readme -调试-工具栏上;这就是为什么我首先回答这个问题的原因。

票数 20
EN

Stack Overflow用户

发布于 2012-05-29 13:41:36

我建议编写一些集成测试,或者至少使用内置的测试客户端来自动化请求,并在视图中放置大量的调试语句。

Django有一个内置的测试客户端:

代码语言:javascript
复制
from django.test.client import Client
c = Client()
response = c.post('/slow_url/')

然后在你看来:

代码语言:javascript
复制
def slow_url(request):
    start = time.time()
    print 'Started db query'
    result = SomeComplexModel.objects.all()
    print 'Finished db query, took ', time.time() - start
    return render('some_complex_template.html', {'result': result})  

当您进行小的更改时,自动化发出请求的过程并能够一次又一次地复制它们,这就是如何改进您的代码。如果您测量运行每个函数所需的时间,则可以计算出CPU时间。你不会花很长时间去磨练那些实际上正在消耗资源的部分。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10799982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档