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輸入錯誤太多次,則需要重新啟動服務器。

此功能不應該完全保護調試器。它旨在使攻擊者更難以利用調試器。切勿在生產中啟用調試器。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM