首頁 >後端開發 >Python教學 >為什麼我的 Flask 開發伺服器顯示雙重重啟訊息?

為什麼我的 Flask 開發伺服器顯示雙重重啟訊息?

Barbara Streisand
Barbara Streisand原創
2024-12-07 15:44:11652瀏覽

Why Does My Flask Dev Server Show a Double Restart Message?

Flask 開發伺服器中的雙重重啟列印輸出

使用Flask 執行網站開發伺服器時,使用者註意到伺服器重啟的異常行為訊息伺服器出現兩次而不是一次。為了理解這背後的原因,讓我們深入研究 Flask 開發伺服器的機制。

Flask 利用 Werkzeug(一個 WSGI 實用程式庫)透過 app.run() 方法啟動開發伺服器。 Werkzeug 採用一種稱為「重新載入」的技術,在偵測到程式碼變更後自動重新啟動伺服器。重新載入過程涉及產生一個子進程,該子進程使用 subprocess.call() 再次執行 Flask 腳本。

此子程序假定與父程序具有相同的程式碼,導致重新啟動訊息的雙重執行。若要消除此行為,請將 app.run() 的 use_reloader 參數設為 False。或者,在 Flask 的命令列執行期間停用重新載入器:

FLASK_DEBUG=1 flask run --no-reload

對於偵測是否存在重新載入子程序至關重要的進階場景,請使用 Werkzeug 的 is_running_from_reloader() 函數。但是,建議使用 @app.before_first_request 裝飾器來初始化模組全域變量,保證每次重新載入後執行一次。

@app.before_first_request
def before_first_request():
    print(f"########### Restarted, first request @ {datetime.utcnow()} ############")

請注意,在完整的 WSGI 中,可能會為每個新子程序呼叫 before_first_request 處理程序使用分叉或新子程序的伺服器。

以上是為什麼我的 Flask 開發伺服器顯示雙重重啟訊息?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn