zoukankan      html  css  js  c++  java
  • 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输入错误太多次,则需要重新启动服务器。

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

  • 相关阅读:
    git 常用操作命令行
    Mysql 命令行...
    bootstrap
    10.11 android输入系统_补充知识_activity_window_decor_view关系
    10.10 android输入系统_APP获得并处理输入事件流程
    10.9 android输入系统_APP跟输入系统建立联系和Dispatcher线程_分发dispatch
    10.8 android输入系统_实战_使用GlobalKey一键启动程序
    10.7 android输入系统_Dispatcher线程情景分析_Reader线程传递事件和dispatch前处理
    10.6 android输入系统_Dispatcher线程_总体框架
    10.5 android输入系统_Reader线程_使用EventHub读取事件和核心类及配置文件_实验_分析
  • 原文地址:https://www.cnblogs.com/hanzeng1993/p/11274451.html
Copyright © 2011-2022 走看看