django请求探查器-一个用于计时http请求的简单探查器。

django-request-profiler的Python项目详细描述


django请求探查器

此软件包现在需要python3和django 1.11及以上版本。对于以前的版本,请参阅python2分支。

一个非常简单的django请求分析器。

简介

< Buff行情> 过早的优化是万恶之源。

有很多非常好的、完整的python和django分析器 可用的。它们可以提供详细的堆栈跟踪和函数调用计时, 输出所有已运行的SQL语句,以及 呈现,以及沿途任何/所有变量的状态。这些工具是 非常适合优化您的应用程序,一旦您决定 时间到了。

django请求探查器不是为了帮助您优化,而是为了帮助您 你首先决定是否需要优化。这是免费的。

要求

  1. 小到可以在生产中运行
  2. 能够在运行时配置分析
  3. 可配置为针对特定URL或用户
  4. 记录基本请求元数据:
  5. < > >
    • 持续时间(请求-响应)
    • 请求路径、远程地址、用户代理
    • 响应状态代码,内容长度
    • 查看功能
    • 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',]

配置

若要配置应用程序,请打开管理网站,然后添加新的请求探查器 "规则集"。默认选项将导致所有非管理请求 剖面图。

许可证

麻省理工学院(见许可证)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在sqlite数据库中保存特定列的历史记录   java如何更改/更新timeseriechart名称(JFreeChart)   java如何将整数转换为可绘制的   汇编什么解释Java的字节码   java查找已编译的类版本号   我应该什么时候在ColdFusion应用程序中使用Java?   java当一个实体的两个字段为(unique=true)时,如何处理JPA异常?   java为什么在所有其他实例都正确的情况下返回错误的布尔值?   java Hibernate每次都准备语句   java停留在平均字长上   对Java和日语字符进行编码   java如何将导致异常的方法的错误消息传递给侦听器中的onTestFailure方法   java代码没有打印结果   java为什么私有内部接口的方法必须是公共的?   休眠发生错误。有关详细信息,请参阅错误日志。JAVAlang.NullPointerException