逐行分析 Django 视图

Posted

技术标签:

【中文标题】逐行分析 Django 视图【英文标题】:Profiling Django views line-by-line 【发布时间】:2013-07-08 16:31:06 【问题描述】:

我有一个带有视图的 Django 应用程序,我希望使用 line_profiler 或类似的逐行分析方法对其进行分析。我已经在其他 python 脚本上成功测试了 line_profiler,但还没有找到在 Django 视图上执行此操作的最佳方法。我创建的所有视图都是由 MATLAB url 请求启动的,因此很难调试。我需要的是某种包装视图的方法,这样当发出请求时 line_profiler 将创建一个统计文件以供以后查看(现在,我想出如何使用 line_profiler 的唯一方法是通过显式调用带有 kernprof 的脚本.py 在终端 - 也许在这一步模拟一个 http 请求会起作用,但我在这方面的尝试都没有成功。)。如果有人有任何建议,将不胜感激!

【问题讨论】:

【参考方案1】:
    django-debug-toolbar 提供大量调试信息,包括分析器。 django-devserver 是 django 的 runserver 的替代品,并且支持 line_profiler

只需要添加模块,因为它默认没有启用

DEVSERVER_MODULES = (
    'devserver.modules.sql.SQLRealTimeModule',
    'devserver.modules.sql.SQLSummaryModule',
    'devserver.modules.profile.ProfileSummaryModule',

    # Modules not enabled by default
    'devserver.modules.ajax.AjaxDumpModule',
    'devserver.modules.profile.MemoryUseModule',
    'devserver.modules.cache.CacheSummaryModule',
    'devserver.modules.profile.LineProfilerModule',
)

【讨论】:

此解决方案有效,尽管我最终编写了一个使用 line_profiler 包装其他视图的视图。

以上是关于逐行分析 Django 视图的主要内容,如果未能解决你的问题,请参考以下文章

django源码分析——处理请求到wsgi及视图view

Django 之restfromwork 源码分析之--视图组件

Django CBV源码分析

django中CBV源码分析

django之视图层

Django框架之视图层(views)介绍