Django框架的丝滑轮廓

django-silk的Python项目详细描述


#silk

=====

*silk现在已经转移到[爵士乐队](https://jazzband.co/)组织,并正在寻找贡献者-如果您认为您可以提供帮助,请与我们联系!*

[![Travisci构建](https://img.shields.io/travis/jazzband/django silk/master.svg)(https://travis ci.org/jazzband/django silk)
[![pypi下载](https://img.shields.io/pypi/v/django silk.svg)(https://pypi.python.org/pypi/django silk)
[![pypi python版本](https://img.shields.io/pypi/pyversions/django silk.svg)(https://pypi.python.org/pypi/django silk)
[![爵士乐队](https://jazzband.co/static/img/badge.svg)(https://jazzband.co/)

silk是django框架的实时评测和检查工具。silk截取并存储http请求和数据库查询,然后将它们显示在用户界面中以供进一步检查:

<;img src="https://raw.githubusercontent.com/jazzband/django-silk/master/screenshots/1.png"width="720px"/>;

**安全说明:*因为silk存储了http请求和数据库查询所有http请求以明文形式进入数据库,它将请求的敏感信息以明文形式(如用户密码)存储到数据库中。。这是一个巨大的安全问题。为此[此处](https://github.com/jazzband/django silk/issues/305)创建了一个问题。


*[认证/授权](认证授权)
*[请求/响应机构](请求-响应机构)
*[元分析](元分析)
*[记录一部分请求](记录一部分请求)
*[限制请求/响应]数据](限制请求响应数据)
*[清除记录的数据](清除记录的数据)
*[贡献](贡献)
*[开发环境](开发环境)


要求

silk已通过以下测试:

*django:1.11、2.0、2.1,2.2
*python:2.7、3.4、3.5、3.6、3.7、3.7
















`` bash
``bash
pip install django silk
```````

`` python
`` python
`` python
```````````````


```````````````````丝织品',

]


已安装的应用程序=(

"silk"

````

**注意:**中间件的放置是敏感的。如果"silk.middleware.silkymiddleware"之前的中间件从"process_request"返回,那么"silkymiddleware"将永远无法执行。因此,您必须确保放在前面的任何中间件都不会返回"process_request"中的任何内容。有关详细信息,请参阅[django docs](https://docs.djangoproject.com/en/dev/topics/http/middleware/process request)。

**注意:**如果您使用的是"django.middleware.gzip.gzipmiddleware",请将其放在**"silk.middleware.silkymiddleware"之前,否则将得到一个编码错误。

如果要使用自定义中间件,例如,开发了"silk.middleware.silkymiddleware"的子类,因此,您可以使用以下设置组合:

``python
Silky_中间件类,

]
```

manage.py makemigrations

python manage.py migrate

`````



silk将自动开始拦截请求,您可以继续添加分析
如果需要。用户可以通过[github标签](https://github.com/jazzband/django silk/releases)访问`/silk/`



\pip安装https://github.com/jazzband/silk/archive/<;version>;.tar.gz
```

但请注意,master
中的版本可能不适用于[需求](需求)中指定的所有版本

``bash
pip install-e git+https://github.com/jazzband/django silk.git egg=silk
```

features

silk主要包括:

*用于拦截请求/响应的中间件上面的。

img src="https://raw.githubusercontent.com/jazzband/django-silk/master/screenshots/1.png"width="720px"/>;

它记录如下内容:

*所用时间
*查询数
*查询时间
*请求/响应头
*请求/响应主体


等等。


单击相关请求也可以获得有关每个请求的详细信息:

<;img src="https://raw.githubusercontent.com/jazzband/django-silk/master/screenshots/2.png"width="720px"/>;


我们可以在潜水前获得有关
所涉及的表、连接数和执行时间(可以通过单击列标题对表进行排序):

<;img src="https://raw.githubusercontent.com/jazzband/django-silk/master/screenshots/3.png"width="720px"/>;

进入堆栈跟踪以确定此请求的来源:

<;img src="https://raw.githubusercontent.com/jazzband/django-silk/master/screenshots/5.png"width="720px"/>;

剖析器。每个请求都将被单独分析,并且分析程序的输出将在silk ui中的请求分析页面上可用。

``python
`silky python\u profiler=true
````


如下:

``python
silky_python_profiler_binary=true
```

启用时,使用[gprof2dot](https://github.com/jrfonseca/gprof2dot)和[viz.js](https://github.com/almende/vis)生成的图形可视化显示在配置文件详细信息页:

<;img src="https://raw.githubusercontent.com/jazzband/django-silk/master/screenshots/10.png"width="720px"/>;



自定义存储类可用于保存的生成的二进制`.prof`文件:

``python
silky_storage_class='path.to.storageclass'
````

选择。您必须确保指定的目录存在。

`` python
`如果未设置此项,则将使用媒体根目录。
silky_python_profiler_result_path='/path/to/profiles/'
````

对于每个请求,下载按钮都将与二进制`.prof`文件一起可用。此文件可用于使用[SnakeViz](https://github.com/jiffyclub/snakeViz)或其他CProfile工具进行进一步分析



Silk还可用于分析特定代码块/函数。为此,它提供了一个decorator和一个上下文
管理器。

例如:silk.profiling.profiler imp中的

``python
sort silk_profile


@silk_profile(name='view blog post')
def post(请求,post_id):
p=post.objects.get(pk=post_id)
return render_to_response('post.html',{
"post":p
}
```

但也以与请求相同的方式收集块内执行的SQL查询:

<;img src="https://raw.githubusercontent.com/jazzband/django-silk/master/screenshots/8.png"width="720px"/>;

post-id:
p=post.objects.get(pk=post-id)
返回render-to-u响应('post.html',{
'post':p
})



=post.objects.get(pk=post_id)
返回render_to_响应('post.html',{
"post":p
}
```

post_id):
使用silk_配置文件(name='view blog post%d'%self.pk):
p=post.objects.get(pk=post_id)
返回render_to_response('post.html',{
"post":p
}
```


例如,如果我们想要分析一个只具有只读访问权限的依赖项中的函数(例如,根拥有的系统python库),我们可以将以下内容添加到"settings.py"中,以便在运行时应用decorator:

``python
'路径.to.module',
"函数":myclass.bar
}
```

可能性:

`` python

""
>动态函数装饰器
""


>平滑的动态配置文件=[{
‘module':'path.to.module',
‘function':'foo'
}]

大致相当于
@silk椆profile()
def foo():
pass

"
动态方法装饰器
""


silky椆动态配置=[{
‘module':'path.to.module',
‘function':'myclass.bar'
}]

……大致相当于
类myclass(object):

@silk\u profile()
def bar(self):
pass

"
动态代码块评测
""


silky\u动态评测=[{
‘module':‘path.to.module’,
‘function':‘foo’,
‘行号与函数相对应,而不是它所在的文件
"start_line":1,
"end_line":2,
"name":"slow foo"
}]

大致相当于
def foo():
使用silk_profile(name='slow foo'):
print(1)
print(2)
print(3)
print(4)
`````

请注意,动态评测的行为方式与python模拟框架相似,我们修改了函数就位,例如:

``python
`my.module""
如果我们要将动态配置文件应用到函数源模块"another.module.foo"中,请选择"another.module.foo":


```python
不会触发任何分析。



\r代码生成


<;img src="https://raw.githubusercontent.com/jazzband/django-silk/master/screenshots/9.png"width="720px"/>;

两者都用于重放请求。curl命令可以通过命令行进行回放,python代码可以在django单元测试中使用,也可以作为一个独立的脚本使用。

'/丝绸/ '.要启用django
身份验证后端,请将以下内容放在"settings.py"中:

``python
`silky`u authentication=true`用户必须登录
`silky`u authorization=true`用户必须具有权限
```

默认情况下,silk将只授权"is-staff"属性设置为"true"的用户。

=我的"自定义"烫发默认情况下也可以使用"lambda"。

```python

silk将为每个请求节省请求和响应主体,以便将来查看
无论请求和响应主体有多大。如果丝绸在大体积、大体积的生产中使用,这会对空间/时间性能产生巨大影响。此行为可以配置以下选项:

`` python
silky_max_request_body_size=-1 silk接受任何<;0作为无限制值
silky_max_response_body_size=1024如果response body>;1024字节,忽略
```

为此,请在"settings.py"中添加以下内容:

``python
silky meta=true
```


silk将记录每次请求结束时将所有内容保存到数据库所需的时间:

<;img src="https://raw.githubusercontent.com/jazzband/django silk/master/screenshots/meta.png"/>;

请注意,在上述截图中,这意味着请求需要29毫秒(django的22毫秒,silk的7毫秒)


\设置与silky_u intercept懔func互斥。

`` python
silky懔u intercept懔u percent=50懔log only 50%的请求
```

请求。为此,请在"settings.py"中添加以下内容:

只有会话启用了录制。
```

当然silky垃圾收集旧的请求/响应数据,可以设置一个配置变量来限制它存储的请求/响应行的数量。ky_max_recorded_requests=10**4
````

可以使用以下配置对其进行调整:

`` python
silky_max_recorded_check_percent=10
````

##贡献

[![爵士乐队](https://jazzband.co/static/img/jazzband.svg)(https://jazzband.co/)

这是一个[爵士乐队](https://jazzband.co/)项目。通过贡献,您同意遵守[贡献者行为准则](https://jazzband.co/about/conduct)并遵循[准则](https://jazzband.co/about/guidelines)。

`发展。它有"silk"代码符号链接,因此
您可以同时处理示例"project"和"silk"包。

为了设置本地开发,您应该首先安装测试"project"的所有依赖项。从"project"目录的
根目录:

``bash
pip install-r test requirements.txt
````

从git存储库的根目录来看:

``bash
pip install-r requirements.txt
````


此时,虚拟环境应该具备成功运行示例"project"和
`silk所需的所有功能。

必须设置"db"和"db-name"环境变量:

``bash
export db=sqlite3
export db-name=db.sqlite3
````

检查[`.travis.yml`](../.travis.yml)。

--noinput
```





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

推荐PyPI第三方库


热门话题
带有字符串的java JNA调用与带有字节[]的java JNA调用的行为不同   java基于键列表获取子映射   重启后永久增加java堆大小?   JavaHTTPS服务器:相互SSL身份验证   java为什么接受接口的方法会拒绝该接口的实现?   片段中的java视图无法应用于()   ms access Java SQL更新命令不工作   java将web服务自动打包和部署到Oracle Application Server 10g   java有没有办法在安卓 studio中为安卓时钟设置多个警报?   位于FTP服务器上的文件上的Java校验和md5   在Java中创建类时遇到问题。有些方法不太确定   java错误:在类chrome\u驱动程序中找不到主方法   通用海图(Javascript\Java)