設定#

一般的なパターンとして、環境変数に設定値を格納することがあります。Quartはfrom_prefixed_env()を介してこれをサポートしており、環境変数を設定に読み込むために使用できます。プレフィックス(デフォルトはQUART_)で始まる環境変数のみが読み込まれます。たとえば、環境変数QUART_TESTING=trueが設定されている場合、

app = Quart(__name__)
app.config.from_prefixed_env()
assert app.config["TESTING"] is True

設定読み込みのもう一つの一般的なパターンは、クラス継承を使用して共通の設定を定義し、本番環境と開発環境でオーバーライドすることです。たとえば、

class Config:
    DEBUG = False
    TESTING = False
    SECRET_KEY = 'secret'

class Development(Config):
    DEBUG = True

class Production(Config):
    SECRET_KEY = 'an actually secret key'

これは、たとえばcreate_app関数で読み込むことができます。

def create_app(mode='Development'):
    """In production create as app = create_app('Production')"""
    app = Quart(__name__)
    app.config.from_object(f"config.{mode}")
    return app

カスタム設定クラス#

config_classはカスタムクラスに設定できますが、アプリの初期化前に変更する必要があります。これはmake_config()が構築時に呼び出されるためです。

インスタンスフォルダ#

インスタンスフォルダは、ファイルと設定を格納するためのデプロイメント固有の場所です。アプリのルートパスを基準にファイルをロードするopen_resource()とは対照的に、インスタンスパスを基準にファイルをロードするopen_instance_resource()を使用できます。設定を含みます。このフォルダから設定を読み込むには、アプリを初期化するときにapp = Quart(__name__, instance_relative_config=True)のように、アプリのルートパスではなく、instance_relative_config引数をTrueに設定します。

インスタンスパスは、アプリの初期化時に指定するか、存在する場合は自動的に検出されます。検索場所は次のとおりです。

/app.py
/instance/

または、アプリがインストールされている場合は

$PREFIX/var/app-instance/