Configuration#
A common pattern is to store configuration values in the
environment. Quart supports this via
from_prefixed_env()
which can be used to load
environment variables into the configuration. Only environment
variables starting with the prefix, default QUART_
will be
loaded. For example if the environment variable QUART_TESTING=true
is set then,
app = Quart(__name__)
app.config.from_prefixed_env()
assert app.config["TESTING"] is True
Another common pattern for configuration loading is to use class inheritance to define common settings with production and development overrides, for example,
class Config:
DEBUG = False
TESTING = False
SECRET_KEY = 'secret'
class Development(Config):
DEBUG = True
class Production(Config):
SECRET_KEY = 'an actually secret key'
This can then be loaded in say a create_app
function, for example:
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
Custom configuration class#
The config_class
can be set to a custom class,
however it must be changed before the app is initialised as the
make_config()
is called on construction.
Instance folders#
An instance folder is a deployment specific location to store files
and configuration settings. As opposed to loading files relative to
the app root path open_resource()
you can load
files relative to an instance path
open_instance_resource()
including the
configuration. To load the configuration from this folder, instead of
relative to the app root path simply provide the
instance_relative_config
argument as True
when initialising
the app app = Quart(__name__, instance_relative_config=True)
.
The instance path can be specified when initialising the app, or found automatically if it exists. The search locations are:
/app.py
/instance/
or if the app has been installed:
$PREFIX/var/app-instance/