首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >分析Django

分析Django
EN

Stack Overflow用户
提问于 2010-03-02 17:15:56
回答 5查看 49.5K关注 0票数 108

我的django应用程序在生产环境中变得非常慢。这可能是由于一些复杂或未索引的查询造成的。

有没有什么django式的方法来分析我的应用程序?

EN

回答 5

Stack Overflow用户

发布于 2010-03-02 17:25:14

只要在google上输入"django-profiling“,你就会得到这些链接(还有更多):

http://code.djangoproject.com/wiki/ProfilingDjango

http://code.google.com/p/django-profiling/

http://www.rkblog.rk.edu.pl/w/p/django-profiling-hotshot-and-kcachegrind/

就我个人而言,我使用的是中间件方法--即每个用户都可以切换存储在会话中的“分析”标志,如果我的分析中间件注意到设置了一个标志,它将使用Python的hotshot模块,如下所示:

def process_view(self, request, view_func, view_args, view_kwargs):

     # setup things here, along with: settings.DEBUG=True 
     # to get a SQL dump in connection.queries

     profiler = hotshot.Profile(fname)
     response = profiler.runcall(view_func, request, *view_args, **view_kwargs)
     profiler.close()

     # process results

     return response

编辑: Konstantin提到的http://github.com/robhudson/django-debug-toolbar对于分析SQL查询来说是一件很好的事情--但是如果你的查询真的很慢(可能是因为有成百上千的查询),那么你将疯狂地等待大量的时间,直到它被加载到浏览器中-然后由于缓慢而很难浏览。此外,django-debug-toolbar在设计上无法提供对AJAX请求内部结构的有用洞察。

EDIT2:django-extensions内置了一个很棒的分析命令:

https://github.com/django-extensions/django-extensions/blob/master/docs/runprofileserver.rst

只需这样做,就可以了:

$ mkdir /tmp/my-profile-data
$ ./manage.py runprofileserver --kcachegrind --prof-path=/tmp/my-profile-data
票数 29
EN

Stack Overflow用户

发布于 2012-12-16 19:22:10

要分析数据访问(这通常是瓶颈所在),请查看django-live-profiler。与Django Debug Toolbar不同,它同时收集所有请求的数据,您可以在生产中运行它,而不会产生太多的性能开销,也不会暴露您的应用程序内部。

票数 15
EN

Stack Overflow用户

发布于 2014-06-07 19:43:09

无耻的插头在这里,但我最近为此目的制作了https://github.com/django-silk/silk。它有点类似于django工具栏,但具有历史记录、代码分析和对一切的更细粒度控制。

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

https://stackoverflow.com/questions/2361985

复制
相关文章

相似问题

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