myesn

myEsn2E9

hi
github

Flask: 現在の環境に応じて異なる設定ファイルを読み込む

説明#

例えば、データベース接続情報はテスト環境と本番環境で通常 2 つの異なる設定に対応しています。

この記事は Python の Flask フレームワークに基づいて実装されています。

異なる環境を設定するために .env ファイルを使用したい場合は、参考にしてください:Python: .env ファイルを通じて異なる環境の環境変数を設定する方法

設定ファイルの作成#

まず、プロジェクトで使用されるすべての設定を含む基底クラスを作成する必要があります:

# config/base.py

class Base:
    SERVICE_NAME: str = 'service a'
    DB_HOST: str = 'base://'

次に、テスト環境と本番環境の設定ファイルを作成します。これらはすべて Base 設定クラスを継承します:

# config/dev.py

class Dev(Base):
    DB_HOST: str = 'dev://'
# config/prod.py

class Prod(Base):
    DB_HOST: str = 'prod://'

init.py の作成#

上記で 2 つの環境の設定が作成されました。次に、現在のディレクトリの __init__.py ファイルに、現在の環境に応じて異なる設定ファイルをロードするツール関数を作成します。同時にインスタンス(シングルトン)を直接宣言し、他の場所でこのインスタンスを通じて設定を直接読み取ることができるようにします:

# config/__init__.py

import os

from config.dev import Dev
from config.prod import Prod

def _get_config():
    '''現在の環境に基づいてConfigインスタンスを作成します'''
    env = os.getenv('FLASK_ENV', 'development')
    if env == 'development':
        return Dev()
    else:
        return Prod()

current_config = _get_config()

Flask フレームワークへの設定のインポート#

最後に、Flask をインスタンス化した後、上記の __init__.py で宣言された current_config をインポートします:

from config import current_config

app = Flask(__name__)
app.config.from_object(current_config)

設定の読み取り#

以下の方法で設定のキーと値を取得できます:

from config import current_config

app = Flask(__name__)
app.config.from_object(current_config)

# 方法一:Flaskから取得
app.config.get('DB_HOST')

# 方法二:config/__init__.pyのインスタンスから取得
current_config.DB_HOST

参考#

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。