django请求探查器-一个用于计时http请求的简单探查器。
django-request-profiler的Python项目详细描述
django请求探查器
此软件包现在需要python3和django 1.11及以上版本。对于以前的版本,请参阅python2分支。
一个非常简单的django请求分析器。
简介
< Buff行情> 过早的优化是万恶之源。有很多非常好的、完整的python和django分析器 可用的。它们可以提供详细的堆栈跟踪和函数调用计时, 输出所有已运行的SQL语句,以及 呈现,以及沿途任何/所有变量的状态。这些工具是 非常适合优化您的应用程序,一旦您决定 时间到了。
django请求探查器不是为了帮助您优化,而是为了帮助您 你首先决定是否需要优化。这是免费的。
要求
- 小到可以在生产中运行
- 能够在运行时配置分析
- 可配置为针对特定URL或用户
- 记录基本请求元数据: < > >
- 持续时间(请求-响应)
- 请求路径、远程地址、用户代理
- 响应状态代码,内容长度
- 查看功能
- django用户和会话密钥(如果适用)
- 数据库查询计数(如果debug=true)
它不需要记录所有的内部时间信息-目标是 可用于监视站点响应时间和识别 提前解决问题。
技术细节
profiler本身作为django中间件运行,它只是在 它首先看到请求,并在完成 反应。它应该作为 中间件类 以便记录最长持续时间。
它连接到 process_request 方法来启动计时器, 过程视图 方法来记录视图函数名,以及 process_response 方法停止计时器,记录所有请求 信息和存储实例。
通过添加用于 筛选要分析的请求。可能有很多,重叠的, 规则集,但如果匹配,则分析请求。规则集模型 定义两种核心匹配方法:
<P>1。uri_regex-为了分析站点的子集,可以提供regex 它与传入的请求路径匹配。如果url匹配,则请求 可以进行分析。 <P>2。user_filter_type-这里有三个选项-profile all users,profile 只有经过身份验证的用户,并分析属于给定 组-例如,创建一个名为"profiling"的组并添加任何您想添加的人 轮廓:这些过滤器属性是and(必须传递uri和用户过滤器),但是 如果请求通过了任何规则中的所有筛选器,则规则作为一个组是一个或多个, 然后对其进行分析。
这些过滤器相当简单,而且有很多用例 想要更多的SOP对分析的历史控制。有两种方法 这个。首先是一个设置, 请求探查器\全局排除函数 ,它是 将请求作为单个参数的函数,必须返回true或 错误的。如果返回false,则不管规则如何,配置文件都将被取消。 其主要用例是排除您没有 感兴趣的,例如来自搜索引擎机器人,或来自管理用户等。 此函数的默认值是防止分析管理员用户请求。
第二个控制是通过profilingrecord上的 cancel() 方法进行的, 可通过 请求配置文件完成 信号访问。挂钩 在这个信号中,您可以添加额外的处理,也可以选择取消 探查器。一个典型的用例是记录 超过设置的请求持续时间阈值。在大容量环境中 例如,可能只想分析所有请求的随机子集。
fromdjango.dispatchimportreceiverfromrequest_profiler.signalsimportrequest_profile_complete@receiver(request_profiler_complete)defon_request_profile_complete(sender,**kwargs):profiler=kwargs.get('instance')ifprofiler.elapsed>2:# log long-running requests# NB please don't use 'print' for real - use loggingprintu"Long-running request warning: %s"%profilerelse:# calling cancel means that it won't be saved to the dbprofiler.cancel()
安装
自v0.11以来,此应用程序已放弃对django<;1.7的支持。
要用作django项目中的应用程序,请使用pip:
$ pip install django-request-profiler
# For hacking on the project, pull from Git:
$ git pull git@github.com:yunojuno/django-request-profiler.git
测试
应用程序安装程序包含一个可以使用django运行的测试套件 测试运行程序:
$ pip install -r requirements.txt
$ python manage.py test test_app request_profiler
如果要测试覆盖率,则需要添加一些依赖项:
$ pip install coverage django-coverage $ python manage.py test_coverage test_app request_profiler
测试也使用tox来运行
$ pip install tox $ tox
注意:要使用自定义用户模型进行测试,应覆盖默认用户模型 通过为引用自定义模型的auth_user_model(在testapp/settings中)设置提供值
测试在提交到主服务器时在travis上运行。
用法
安装后,将应用程序和中间件添加到项目的设置文件中。 为了添加数据库表,您应该运行 migrate 命令:
$ python manage.py migrate request_profiler
注意:中间件必须是 中间件类中的 第一项 项
INSTALLED_APPS=('django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','request_profiler',)MIDDLEWARE_CLASSES=[# this package's middleware'request_profiler.middleware.ProfilingMiddleware',# default django middleware'django.middleware.common.CommonMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.middleware.csrf.CsrfViewMiddleware','django.contrib.messages.middleware.MessageMiddleware',]
配置
若要配置应用程序,请打开管理网站,然后添加新的请求探查器 "规则集"。默认选项将导致所有非管理请求 剖面图。
许可证
麻省理工学院(见许可证)