Django http 和 https 官网解答

概要: 运行Werkzeug调试器的RunServerPlus典型runserver

介绍


此项要求您安装了
Werkzeug WSGI实用程序。Werkzeug包含一个kick ass调试器,它可以提供良好的调试回溯并添加一个基于AJAX的调试器(允许在traceback的帧的上下文中执行代码)。此外,它提供了一个很好的源代码访问视图。

入门

要开始,我们只使用runserver_plus命令而不是普通的 runserver命令:

$ python manage.py runserver_plus

* Running on http://127.0.0.1:8000/
* Restarting with reloader...

Validating models...
0 errors found

Django version X.Y.Z, using settings 'screencasts.settings'
Development server is running at http://127.0.0.1:8000/
Using the Werkzeug debugger (http://werkzeug.pocoo.org/)
Quit the server with CONTROL-C.

注意:所有正常的runserver选项都适用。换句话说,如果您需要更改端口号或主机信息,您可以像平常一样进行更改。

用法

当发生异常时,将显示Werkzeug回溯页面,而不是默认的Django回溯页面。

WERKZEUG  - 回溯

除了典型的追溯信息,我们还有几个选项。将鼠标悬停在特定的追溯线上时会出现这些选项。请注意,右侧有两个按钮:

WERKZEUG选项

选项是:

查看源

这将显示回溯下方的源:

WERKZEUG源

能够查看源文件非常方便,因为它提供了有关错误的更多上下文信息。实际的追溯区域突出显示,因此很容易发现。

UI的一个尴尬方面是页面不会滚动到底部。起初我认为没有发生任何事情因为这个。

交互式调试控制台

单击此按钮可打开您所在的追溯线下的新窗格。这是拍摄的钱:

WERKZEUG调试器

基于ajax的控制台出现在窗格中,您可以开始调试。请注意,在上面的屏幕截图中,我做了一个print environ,以查看进入该函数的环境参数中的内容。

警告不能在任何类型的生产环境中使用它。甚至没有快速问题检查。我不能强调这一点。交互式调试器允许您针对服务器评估python代码。你被警告过了。

SSL 

runserver_plus还支持SSL,因此您可以轻松调试使用https时弹出的错误。要使用SSL,只需提供证书的文件名; 将自动生成密钥和证书文件:

$ python manage.py runserver_plus --cert-file cert.crt
Validating models...
0 errors found

Django version X.Y.Z, using settings 'mysite.settings'
Development server is running at http://127.0.0.1:8000/
Using the Werkzeug debugger (http://werkzeug.pocoo.org/)
Quit the server with CONTROL-C.
 * Running on https://127.0.0.1:8000/
 * Restarting with reloader
Validating models...
0 errors found

Django version X.Y.Z, using settings 'mysite.settings'
Development server is running at http://127.0.0.1:8000/
Using the Werkzeug debugger (http://werkzeug.pocoo.org/)
Quit the server with CONTROL-C.

运行此命令后,可以通过https://127.0.0.1:8000访问您的Web应用程序 

您还会发现在当前工作目录中创建了两个文件:密钥文件和证书文件。如果再次运行上述命令,将重复使用这些证书文件,这样您就不必每次都从浏览器继续接受自己生成的证书。如果您已经拥有证书,您还可以为要使用的证书提供特定文件:

$ python manage.py runserver_plus --cert-file /tmp/cert.crt

请注意,如果要重用现有证书,则需要使用OpenSSL库和Werkzeug 0.9或更高版本。

要安装OpenSSL:

$ pip install pyOpenSSL

证书路径

您可以配置.crt和.key文件的不同路径。至少有一个--cert-file--key-file必须定义为使用SSL。

您可以使用--cert-file选项或不建议使用的--cert选项(目前是别名)将路径设置为.crt文件--cert-file如果未设置此选项,则runserver_plus假定该选项与该文件位于同一目录中--key-file

您可以使用--key-file选项将路径设置为.key文件如果未设置此选项,则runserver_plus假定该选项与该文件位于同一目录中--cert-file

如果要创建新文件,则可以在没有扩展名的情况下传递文件名。将创建具有此名称和.crt和.key扩展名的正确文件。

配置

RUNSERVERPLUS_SERVER_ADDRESS_PORT设置可以被配置为指定地址和端口的开发服务器应该绑定。

如果您发现自己频繁启动服务器:

$ python manage.py runserver_plus 0.0.0.0:8000

您可以使用设置自动将开发默认为地址/端口:

RUNSERVERPLUS_SERVER_ADDRESS_PORT = '0.0.0.0:8000'

要确保Werkzeug可以登录到控制台,您可能需要在设置中添加以下内容:

LOGGING = {
    ...
    'handlers': {
        ...
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
        },
    },
    'loggers': {
        ...
        'werkzeug': {
            'handlers': ['console'],
            'level': 'DEBUG',
            'propagate': True,
        },
    },
}

IO调用和CPU使用

gh625中所述, runserver_plus可以看到使用大量CPU并在空闲时生成许多I / O.

这是由于Werkzeug实施自动重新加载功能的方式。它支持两种通过stat轮询文件系统事件进行自动重新加载的方法

统计轮询方法是相当蛮力和汽车无问题STAT这会导致CPU和IO负载系统调用。

如果可能的话尝试安装Watchdog软件包,这应该会自动导致Werkzeug使用 文件系统事件

您可以在Werkzeug文档中阅读更多相关信息

使用默认值1秒的统计轮询时,您还可以增加轮询间隔这将减少CPU负载,但代价是文件编辑需要更长时间才能获取。

这可以在django设置文件中设置两种方式:

RUNSERVERPLUS_POLLER_RELOADER_INTERVAL = 5

或作为一个commad行参数:

$ python manage.py runserver_plus --reloader-interval 5

调试器

以下有关调试器PIN的文本是从Werkzeug 文档中逐字逐句获取的,其中包含调试器PIN

从Werkzeug 0.11开始,调试器还受PIN保护。这是一个安全帮助程序,使得调试程序在生产中被利用的可能性降低,因为人们发生了使调试器保持活动状态的问题。默认情况下启用基于PIN的身份验证。

当调试器出现时,首次使用时它将提示输入打印到命令行的PIN。PIN以特定于项目的稳定方式生成。在某些情况下,可能无法在重新启动之间生成稳定的PIN,在这种情况下,可以通过环境变量WERKZEUG_DEBUG_PIN提供显式PIN。这可以设置为一个数字,并将成为PIN。此变量也可以设置为off值以完全禁用PIN检查。

--nopin调用runserver_plus命令时,也可以通过传递参数来禁用PIN 

如果PIN输入错误太多次,则需要重新启动服务器。

此功能不应该完全保护调试器。它旨在使攻击者更难以利用调试器。切勿在生产中启用调试器。

原文地址:https://www.cnblogs.com/hanzeng1993/p/11274451.html