Configuration
Options
The following Flask Configuration values are honored by Flask-OpenHeart. If the corresponding argument is also provided
to the OpenHeart.init_app() method, then the init argument will take priority. Per-endpoint configuration takes
priority over all other configuration.
Option |
Description |
|---|---|
OPENHEART_DATABASE_URI init arg: |
The databaase URI, for storing reactions. Default: |
OPENHEART_URL_PREFIX init arg: |
The URL prefix for the OpenHeart endpoints. Default: |
OPENHEART_URL_POST_PREFIX init arg: |
The URL prefix for the OpenHeart POST endpoint, if different. Default: The value of |
Global Configuration
Application configuration can be set by environment variables, by prefixing “FLASK_” to the config key. For example, to run an application with a custom URL prefix:
FLASK_APP=app:app FLASK_OPENHEART_URL_PREFIX=/reactions flask run
It can, of course, also be set in the application code before calling OpenHeart.init_app():
from flask import Flask
from flask_openheart import OpenHeart
app = Flask(__name__)
app.config["OPENHEART_URL_PREFIX"] = "/reactions"
openheart = OpenHeart()
openheart.init_app(app)
Or as arguments to OpenHeart.init_app() (which take priority over the app config and environment variables):
from flask import Flask
from flask_openheart import OpenHeart
app = Flask(__name__)
openheart = OpenHeart()
openheart.init_app(app, url_prefix="/reactions")
Per-Endpoint Configuration
It is also possible to set any of these configuration values on a per-endpoint basis. Instead of passing True for the
openheart argument, you can pass a dictionary of configuration options. This dictionary uses the same key names as the
OpenHeart.init_app() method. Configuration set in this way takes priority over all other configuration.
To set configuration for a specific route:
@app.route("/foo/", openheart={ "url_prefix"="/reactions" })
def foo():
return "bar"
Database Configuration
Flask-OpenHeart stores all reactions in a database. Multiple different types of databases are supported. By default, reactions are stored in a local flat-file database powered by SQLite.
SQLite (local file)
The SQLite backend can create a local single-file database and store all reactions there. By default, this file is named
“openheart.db” and gets stored in the current working directory (where you ran flask run).
To use the SQLite backend and specify the location of the database, set the OPENHEART_DATABASE_URI config value to a
file URI, starting with “file:”.
For example:
app.config["OPENHEART_DATABASE_URI"] = "file:/tmp/reactions.db"
openheart = OpenHeart()
openheart.init_app(app)
Or:
openheart = OpenHeart()
openheart.init_app(app, database_uri="file:/tmp/reactions.db")
For details on how to structure the URI, please see the SQLite documentation for URIs
Valkey/Redis
The Valkey backend can connect to a Valkey (or Redis) server and store all reactions there.
The Valkey dependencies are not installed by default. To install the Valkey dependencies, run:
pip install flask-openheart[valkey]
To use the Valkey backend, set the OPENHEART_DATABASE_URI config value to a valid Valkey or Redis database URI,
starting with either “valkey:” or “redis:”.
For example:
app.config["OPENHEART_DATABASE_URI"] = "valkey://127.0.0.1:6369"
openheart = OpenHeart()
openheart.init_app(app)
Or:
openheart = OpenHeart()
openheart.init_app(app, database_uri="valkey://127.0.0.1:6369")
For details on how to structure the URI, please see valkey.Valkey.from_url()