設定#
一般的なパターンとして、環境変数に設定値を格納することがあります。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/