<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 在服務器運行 WSGI 應用 這里有一些在服務器運行 WSGI 應用的方式。當你正在開發一個應用,你往往不想在一個成熟服務器上部署和運行,取而代之的是一個輕量服務器。 Werkzeug 就內置了這樣一個輕量的服務器。 在一個服務器上運行 start-myproject.py 最簡單的方法如下示例: ~~~ #!/usr/bin/env python # -*- coding: utf-8 -*- from werkzeug.serving import run_simple from myproject import make_app app = make_app(...) run_simple('localhost', 8080, app, use_reloader=True) ~~~ 你可以添加一個 extra_files 關鍵字參數,一個你想要添加的文件(比如配置文件)列表。 serving.run_simple(*hostname*, *port*, *application*, *use_reloader=False*, *use_debugger=False*, *use_evalex=True*, *extra_files=None*, *reloader_interval=1*, *threaded=False*, *processes=1*, *request_handler=None*, *static_files=None*, *passthrough_errors=False*, *ssl_context=None*) 用 wsgiref 帶可選參數 reloader 運行一個應用,通過包裹 wsgiref 來改正多線程 WSGI的默認的錯誤報告,添加可選的多線程,支持 fork。 這個函數也有一個命令行接口: ~~~ python -m werkzeug.serving --help ~~~ 0.5 新版功能: 通過添加 static_files 簡單支持靜態文件和 passthrough_errors。 0.6 新版功能: 支持添加 SSL。 0.8 新版功能: 添加支持從 certificate 自動加載 SSL 上下文和私鑰。file and private key. 0.9 新版功能: 添加命令行接口。 <table class="docutils field-list" frame="void" rules="none"><col class="field-name"/><col class="field-body"/><tbody valign="top"><tr class="field-odd field"><th class="field-name">參數:</th><td class="field-body"><ul class="first last simple"><li><strong>hostname</strong> – 應用的服務器。例子: <tt class="docutils literal"><span class="pre">'localhost'</span></tt>。</li><li><strong>port</strong> – 服務器接口。 例子: <tt class="docutils literal"><span class="pre">8080</span></tt></li><li><strong>application</strong> – 要執行的 WSGI 應用。</li><li><strong>use_reloader</strong> – 當模塊更改是否自動重啟 python 進程?</li><li><strong>use_debugger</strong> – 是否開啟 werkzeug 調試?</li><li><strong>use_evalex</strong> – 是否開啟異常診斷功能?</li><li><strong>extra_files</strong> – 模塊可以加載的件列表。比如配置文件。</li><li><strong>reloader_interval</strong> – 加載的時間間隔。</li><li><strong>threaded</strong> – 每個請求是否被放在一個獨立線程?</li><li><strong>processes</strong> – 請求處理線程的最大個數。</li><li><strong>request_handler</strong> – 用于替換默認的可選參數。你可以用一個不同的<tt class="xref py py-class docutils literal"><span class="pre">BaseHTTPRequestHandler</span></tt>子類替換它。</li><li><strong>static_files</strong> – 一個靜態文件地址的字典。和 <tt class="xref py py-class docutils literal"><span class="pre">SharedDataMiddleware</span></tt>差不多。它實際上僅僅是在服務器運行前用中間件包裹一個應用。</li><li><strong>passthrough_errors</strong> – 設為 <cite>True</cite> 關閉錯誤捕獲。這意味著服務可能會因錯誤而崩潰,但是對于調試鉤子很有用 (比如pdb)。</li><li><strong>ssl_context</strong> – 連接的 SSL 上下文。或者一個 OpenSSL 上下文,從<tt class="docutils literal"><span class="pre">(cert_file,</span> <span class="pre">pkey_file)</span></tt> 得到的一個元組,服務是 <tt class="docutils literal"><span class="pre">'adhoc'</span></tt> 的則會自動創建一個,如果是 <cite>None</cite> 則會關閉 SSL(這是默認的)。</li></ul></td></tr></tbody></table> serving.make_ssl_devcert(*base_path*, *host=None*, *cn=None*) 創建一個 SSL 密鑰。用于代替 'adhoc' 密鑰將會在服務啟動的時候創建一個新的證書。他接受一個存放密鑰、證書和主機或 CN 的路徑。如果主機擁有這個將會使用 CN *.host/CN=host。 更多信息請看 [run_simple()](# "serving.run_simple")。 0.9 新版功能. | 參數: | **base_path** – 證書和密鑰的路徑。擴展名是 .crt 的文件被添加到證書,擴 | |-----|-----| 展名為 .key 的文件被添加到密鑰。:param host: 主機的名字。這個用于替代 cn。:param cn: 使用 CN。 Information 開發服務器不是為了生產環境,它的出現是為了開發方便,在高負載情況下效率是很低的。生產環境部署一個應用請看 [*Application Deployment*](#) 頁面。 ### 虛擬主機 一些應用有多個子域名,你需要模擬本地。幸運的是 [hosts file](http://en.wikipedia.org/wiki/Hosts_file) 文件可以給本機分配多個名字。 這允許你使用 yourapplication.local 和 api.yourapplication.local (或者其他)代替 localhost 訪問本機。 你可以從下面的地方找到 hosts 文件: > | Windows | %SystemRoot%\system32\drivers\etc\hosts | |-----|-----| | Linux / OS X | /etc/hosts | 你可以用你喜歡的文本編輯器打開 hosts 文件,在 localhost 后面加上: ~~~ 127.0.0.1 localhost yourapplication.local api.yourapplication.local ~~~ 保存之后你應該就可以通過你添加的主機名字訪問開發服務器了。你可以使用[*URL Routing*](#) 系統調度”兩個”主機或自己解析 request.host 。 ### 關閉服務 0.7 新版功能. 從 Werkzeug 0.7 版本開始,開發服務器允許在一個請求后關閉服務。目前要求你的Python版本在 2.6 以上,同時也只能在開發服務器啟用。通過在 WSGI 環境調用'erkzeug.server.shutdown' 來開啟 shutdown: ~~~ def shutdown_server(environ): if not 'werkzeug.server.shutdown' in environ: raise RuntimeError('Not running the development server') environ['werkzeug.server.shutdown']() ~~~ ### 故障排除 在一些支持并配置 ipv6 的操作系統,比如 Linux, OS X 10.4 或更高 和 Windows Vista一些瀏覽器有時候訪問本地服務器很慢,原因有可能是本機被設置為同時支持 ipv4 和ipv6 套接字,一些瀏覽器會首先嘗試 ipv6 協議。 而目前集成的服務器不能同時支持兩種協議。為了更好的可移植性,將會默認支持 ipv4協議。 注意到解決這個問題有兩種方法。如果你不需要ipv6 支持,你可以移除 [hosts file](http://en.wikipedia.org/wiki/Hosts_file) 文件中的下面一行: ~~~ ::1 localhost ~~~ 另外你也可以關閉瀏覽器的 ipv6 支持。比如,在火狐瀏覽器中你可以進入about:config 關閉 network.dns.disableIPv6 。然后,在 werkzeug 0.6.1中不推薦這種做法。 從 Werkzeug 0.6.1 開始服務器將不再根據操作系統的配置來轉換協議。這意味著如果你的瀏覽器關閉 ipv6 支持,而你的操作系統更傾向于 ipv6,你將連接不上服務器。這種情況下,你可以移除本機 hosts 文件的 ::1 或者明確的用一個 ipv4 協議地址(127.0.0.1)綁定主機名。 ### SSL 0.6 新版功能. 內置服務器支持測試目的的 SSL,如果提供一個 SSL上下文,他將會被使用,這意味著服務器可以在 HTTP 或 HTTPS 模式下運行,但不可同時在兩種模式下運行。這個功能需要Python OpenSSL 庫。 ### 快速開始 在werkzeug開發過程中使用 SSL 最簡單的方法就是通過 werkzeug 生成一個 SSL 證書和私鑰存起來。對于證書你需要提供生成證書的服務器名或一個 CN. 1. 生成一個 SSL 密鑰并存放在某個地方: ~~~ >>> from werkzeug.serving import make_ssl_devcert >>> make_ssl_devcert('/path/to/the/key', host='localhost') ('/path/to/the/key.crt', '/path/to/the/key.key') ~~~ 1. 現在這個元組會當作 ssl_context 傳入 [run_simple()](# "serving.run_simple") 方法: run_simple(‘localhost', 4000, application,ssl_context=(‘/path/to/the/key.crt', ‘/path/to/the/key.key')) 現在當你通過瀏覽器訪問 web 應用的時候將需要驗證證書。 ### 手動加載上下文 你也可以通過代碼創建一個上下文代替使用 ssl_context 元組。這個方法是更好控制的: ~~~ from OpenSSL import SSL ctx = SSL.Context(SSL.SSLv23_METHOD) ctx.use_privatekey_file('ssl.key') ctx.use_certificate_file('ssl.cert') run_simple('localhost', 4000, application, ssl_context=ctx) ~~~ ### 生成證書 使用 openssl 工具代替 [make_ssl_devcert()](# "serving.make_ssl_devcert") 預先創建一個證書。這要求你的系統安裝 openssl 命令行工具: ~~~ $ openssl genrsa 1024 > ssl.key $ openssl req -new -x509 -nodes -sha1 -days 365 -key ssl.key > ssl.cert ~~~ ### Adhoc 證書 開啟 SSL 最簡單的方法就是用 adhoc 模式運行服務。在這個例子中 Werkzeug 將會為你創建一個證書: ~~~ run_simple('localhost', 4000, application, ssl_context='adhoc') ~~~ 當然這種方法也有缺點,那就是每次重載服務你都需要驗證證書。不推薦 Adhoc 證書因為現在的瀏覽器因為安全原因對他們支持并不好。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看