首頁 >後端開發 >Python教學 >為什麼我的 Flask 開發伺服器似乎運行了兩次?

為什麼我的 Flask 開發伺服器似乎運行了兩次?

Patricia Arquette
Patricia Arquette原創
2024-12-21 16:57:10334瀏覽

Why Does My Flask Dev Server Seem to Run Twice?

為什麼 Flask 開發伺服器似乎運行了兩次

在 Flask 中,Werkzeug 庫為開發伺服器提供了 app.run()。每次更新程式碼時,Werkzeug 都會利用重新載入器重新啟動進程。此重新載入器會產生子進程,導致腳本使用 subprocess.call() 再次執行。

當您執行開發伺服器時,腳本將由原始進程和子進程執行,從而導致重複的列印行。

停用重新載入器

要消除額外的執行,您可以停用透過在 app.run() 中將 use_reloader 設為 False 來重新載入。這將阻止自動重新加載,但也會停用即時重新加載功能。

或者,您可以使用帶有 --no-reload 選項的 Flask run 指令。

偵測子進程

如果需要區分原始進程和子進程,可以使用werkzeug.serving.is_running_from_reloader 函數,如果您處於子進程中,則傳回 True。

設定模組全域變數

用於在網路的整個生命週期中設定模組全域變數伺服器,考慮使用 @app.before_first_request 裝飾器。此裝飾器適用於僅在每次重新載入後、收到第一個請求時執行一次的函數。

WSGI 伺服器的注意事項

如果您部署在使用分叉或新子程序的WSGI 伺服器上的應用程式中,before_first_request 處理程序可能會被多次調用,每個新進程調用一次過程。

以上是為什麼我的 Flask 開發伺服器似乎運行了兩次?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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