我的Django应用程序太慢了,我想弄清楚是什么需要时间:
我尝试了Django-debug-toolbar,但是找不到一个面板,它可以让我分出加载时间。
我的要求:
django-debug-toolbar 能做到这一点吗?什么面板?
还有其他能做到这一点的django应用程序吗?
发布于 2012-05-30 05:55:22
最后找到了一种方法来分析我的django way应用程序:
下面的2条django片段提供了middleware,该代码段描述了整个流程,如果请求在GET keys中有prof,则输出:
简单而简单的剖析--拯救了我的生活!
发布于 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中像这样启用面板:
DEBUG_TOOLBAR_PANELS = (
'debug_toolbar.panels.version.VersionDebugPanel',
'debug_toolbar.panels.timer.TimerDebugPanel',
'debug_toolbar.panels.profiling.ProfilingDebugPanel',
)这个面板的存在并没有记录在django的readme -调试-工具栏上;这就是为什么我首先回答这个问题的原因。
发布于 2012-05-29 13:41:36
我建议编写一些集成测试,或者至少使用内置的测试客户端来自动化请求,并在视图中放置大量的调试语句。
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时间。你不会花很长时间去磨练那些实际上正在消耗资源的部分。
https://stackoverflow.com/questions/10799982
复制相似问题