2020年6月14日日曜日

flack で設定ファイルに python ファイルを使う方法

概要

設定ファイルに Python ファイルを使うことでデフォルトの値や環境変数を使って柔軟に設定を定義することができます

環境

  • Python 3.8.3
  • flask 1.1.2

準備

  • pipenv install flask

アプリ作成

  • mkdir test
  • vim test/__ini__.py
from flask import Flask
app = Flask(__name__)
app.config.from_object("test.config.Config")

app.config.from_object にクラスを指定することでそのクラスが持つクラス定数を参照することができます

  • vim run.py
from test import app

@app.route("/")
def index():
    return "%s,%s" % (app.config["NAME"], app.config["AGE"])

app.run(debug=True)

設定ファイル作成

  • mkdir test/config
  • vim test/config/__init__.py
import os

class Config:
    NAME = "hawksnowlog"
    AGE = os.environ.get("AGE", 10)

スーパークラスで共通の設定を管理する

上書きしたい設定だけ継承したクラスで再定義してあげましょう
AGE は Config クラスのものが使われます

import os

class Config:
    NAME = "hawksnowlog"
    AGE = os.environ.get("AGE", 10)

class DevConfig(Config):
    NAME = "dev_hawksnowlog"

config ProductionConfig(Config):
    NAME = "pro_hawksnowlog"

動作確認

  • pipenv run python run.py
  • curl localhost:5000

=> hawksnowlog,10

  • AGE=50 pipenv run python run.py
  • curl localhost:5000

=> hawksnowlog,50

参考サイト

0 件のコメント:

コメントを投稿