我有以下 Flask 應用程式的代碼片段:
import flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
# Some code...
on_heroku = 'DYNO' in os.environ
if on_heroku:
# Do something
else:
# Do something
return ("SUCCESS", 200)
def open_browser():
on_heroku = 'DYNO' in os.environ
if on_heroku:
# Do something
else:
# Do something
if __name__ == "__main__":
open_browser()
app.run(debug=True)
我發現on_heroku = 'DYNO' in os.environ和 值的檢查on_heroku在代碼中寫了兩次。
如何改進代碼(例如,on_heroku作為引數傳遞?)以使程式仍然可以毫無問題地運行?
uj5u.com熱心網友回復:
使其成為獨立功能:
def check():
on_heroku = 'DYNO' in os.environ
if on_heroku:
# Do something
else:
# Do something
def index():
check()
def open_browser():
check()
您也可以在 if 陳述句中進行環境檢查而不是分配。
if 'DYNO' in os.environ:
...
甚至只是在運行時全域分配一次:
on_heroku = 'DYNO' in os.environ
# then run the rest of the program
uj5u.com熱心網友回復:
我的建議是使用配置類并全域匯入配置并根據需要使用它。如果你有一個更大的專案考慮使用一個庫,有很多選擇。(https://www.dynaconf.com/,pydantic-settings)
如果您使用 pydantic,請考慮使用https://pydantic-docs.helpmanual.io/usage/settings/,您還可以創建一個 .env 檔案來輕松進行本地開發,請查看下面的示例。
class Settings(BaseSettings):
"""Application settings."""
dyno: str = Field(env="DYNO")
class Config:
env_file = f".env"
SETTINGS = Settings()
您現在可以在應用程式中全域使用您的設定。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/518112.html
標籤:Pythonheroku
