如何针对执行时间来分析Django应用程序?

2024-05-17 05:04:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我的Django应用程序速度太慢了,我想知道需要花些什么时间:

我试过Django-debug-toolbar,但找不到一个可以让我中断加载时间的面板。

我的要求:

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

能做到吗?[什么小组?]

还有其他的django应用可以做到这一点吗?


Tags: 模块djangodebug应用程序面板类型堆栈过程
3条回答

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

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

from django.test.client import Client
c = Client()
response = c.post('/slow_url/')

然后在你看来:

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时间。你不会花很长时间去钻研那些实际上在消耗资源的部分。

终于找到了一种方法来分析我的django webapp:

下面的两个django代码片段提供了middleware,它对整个流进行了概要分析,并在 请求在GET keys中有prof

简单明了的剖析-拯救了我的一天!

django-debug-toolbar2.0版

默认情况下,^{}2.0在设置DEBUG_TOOLBAR_PANELS中包含^{}。您可以通过勾选工具栏中的“分析”复选框并刷新页面来查看此分析信息。

django-debug-toolbar

的旧版本

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

DEBUG_TOOLBAR_PANELS = (
  'debug_toolbar.panels.version.VersionDebugPanel',
  'debug_toolbar.panels.timer.TimerDebugPanel',
  'debug_toolbar.panels.profiling.ProfilingDebugPanel',
)

这个面板的存在并没有在django调试工具栏的自述文件中记录下来;这就是我在这里首先回答的原因。

相关问题 更多 >