在python的WEB架構Flask中使用多個設定檔的解決方案

來源:互聯網
上載者:User
有些架構本身就支援多設定檔,例如Ruby On Rails,nodejs下的expressjs。python下的Flask雖然本身支援設定檔管理, 但單純使用from_object和from_envvar卻不是那麼方便。有沒有更好的辦法?

答案是Flask-Environments這個包。它能通過FLASK_ENV環境變數自動選擇開發環境配置或生產環境配置。使用之前要先安裝:
複製代碼 代碼如下:

$ sudo pip install Flask-Environments


然後修改config.py,將公用配置和預設配置寫入Config類,針對環境的特殊配置寫入各個環境的類:
複製代碼 代碼如下:


# config.py
import os

class Config(object):
DEBUG = True
BASEDIR = os.path.abspath(os.path.dirname(__file__))

HOST = '0.0.0.0'
PORT = '8000'

class Development(Config): # inherit from Config
pass

class Production(Config):
DEBUG = False
HOST = '127.0.0.1
PORT = 14000


然後在產生app對象的地方載入配置:
複製代碼 代碼如下:


from flask import Flask
from flask_environments import Environments

app = Flask(__name__)
env = Environments(app)
env.from_object('config')


這樣預設通過app.run()方式啟動時會載入開發配置。若要啟動生產環境,則要先設定環境變數FLASK_ENV=PRODUCTION:
複製代碼 代碼如下:


$ FLASK_ENV=PRODUCTION gunicorn -b 127.0.0.1:14000 myapp:app
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.