Flask 開發(fā)/生產(chǎn)

2021-08-10 17:47 更新

大多數(shù)應(yīng)用不止需要一份配置。生產(chǎn)服務(wù)器和開發(fā)期間使用的服務(wù)器應(yīng)該各有一份單獨(dú) 的配置。處理這個(gè)的最簡(jiǎn)單方法是,使用一份默認(rèn)的總會(huì)被載入的配置,和一部分版本 控制,以及獨(dú)立的配置來(lái)像上面提到的例子中必要的那樣覆蓋值:

app = Flask(__name__)
app.config.from_object('yourapplication.default_settings')
app.config.from_envvar('YOURAPPLICATION_SETTINGS')

然后你只需要添加一個(gè)獨(dú)立的 config.py 文件然后 export YOURAPPLICATION_SETTINGS=/path/to/config.py 。不過(guò),也有其它可選的方式。 例如你可以使用導(dǎo)入或繼承。

在 Django 世界中流行的是在文件頂部,顯式地使用 from yourapplication.default_settings import * 導(dǎo)入配置文件,并手動(dòng)覆 蓋更改。你也可以檢查一個(gè)類似 YOURAPPLICATION_MODE 的環(huán)境變量來(lái)設(shè)置 production , development 等等,并導(dǎo)入基于此的不同的硬編碼文件。

一個(gè)有意思的模式是在配置中使用類和繼承:

class Config(object):
    DEBUG = False
    TESTING = False
    DATABASE_URI = 'sqlite://:memory:'

class ProductionConfig(Config):
    DATABASE_URI = 'mysql://user@localhost/foo'

class DevelopmentConfig(Config):
    DEBUG = True

class TestingConfig(Config):
    TESTING = True

啟用這樣的配置你需要調(diào)用 from_object()

app.config.from_object('configmodule.ProductionConfig')

管理配置文件有許多方式,這取決于你。這里仍然給出一個(gè)好建議的列表:

  • 在版本控制中保留一個(gè)默認(rèn)的配置。向配置中遷移這份默認(rèn)配置,或者在覆蓋 配置值前,在你自己的配置文件中導(dǎo)入它。
  • 使用環(huán)境變量來(lái)在配置間切換。這樣可以在 Python 解釋器之外完成,使開發(fā) 和部署更容易,因?yàn)槟憧梢栽诓挥|及代碼的情況下快速簡(jiǎn)便地切換配置。如果你 經(jīng)常在不同的項(xiàng)目中作業(yè),你甚至可以創(chuàng)建激活一個(gè) virtualenv 并導(dǎo)出開發(fā) 配置的腳本。
  • 使用 fabric 之類的工具在生產(chǎn)環(huán)境中獨(dú)立地向生產(chǎn)服務(wù)器推送代碼和配置。 參閱 使用 Fabric 部署 模式來(lái)獲得更詳細(xì)的信息。
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)