這是一個有點老,但我想補充,我們如何做到這一點與瓶。其中大部分改編自http://flask.pocoo.org/docs/config/。
在我們config.py我們定義多個類(每一個環境):
class Config(object):
FOO = 1
BAR = 2
class Development(Config):
BAR = 3
然後我們在每個應用程序節點的設置,我們在gunicorn init腳本環境變量(對於我們這種生活中的管理員配置,但它不一定是)。
environment=APPLICATION_ENV='Development'
接着在初始化期間將燒瓶應用(只運行在服務器啓動,而不是請求上下文內):
try:
env = os.environ['APPLICATION_ENV']
except KeyError as e:
logging.error('Unknown environment key, defaulting to Development')
env = 'Development'
app.config.from_object('config.%s' % env)
現在的app.config [ 'BAR']將3
我們還希望支持本地配置文件(例如,在開發人員機器上或從廚師直接部署到機器並且不存儲在git中的密碼)。要做到這一點,我們已經擴展了上面的內容,以根據app.config ['LOCAL_CONFIG']參數加載本地配置。
class Development(Config):
BAR = 3
LOCAL_CONFIG = '/etc/localConfig.py'
然後在/ etc/localConfig中。PY
BAR = 4
在我們的應用程序的初始化代碼
後再次上面的代碼加載初始的app.config適用環境:
if 'LOCAL_CONFIG' in app.config:
#try to load the local configuration overrides
if app.config.from_pyfile(app.config['LOCAL_CONFIG'], silent=True):
logging.info('Loaded local config file at %s' % app.config['LOCAL_CONFIG'])
else:
logging.warning('Failed to load local config file at %s - does it exist?' % app.config['LOCAL_CONFIG'])
此時的app.config [ 'BAR']爲4。
這並不完美,因爲如果你的配置中有字典,你將只能覆蓋整個字典,而不是其中的關鍵字。它確實完成了我們需要的大部分。
http://flask.pocoo.org/docs/config/#development-production – zengr 2014-04-19 22:33:17