Solution
from flask import Flask, g, current_app
def create_app():
app = Flask(__name__)
with app.app_context():
#in context, you can use current_app to fetch or assign app.config['key']
current_app.bb = 'bbb!' # not normally used
current_app.config['aaa'] = 'aaa!' # usually we use current_app.config['name'] = 'value'
print("1", app.bb) # for this example, using app or current_app has no different.
print("1", current_app.config['aaa'])
with app.app_context():
#here to use current_app to get what you want.
print("2", current_app.bb)
print("2", current_app.config['aaa'])
>>>create_app()
1 bbb!
1 aaa!
2 bbb!
2 aaa!
from flask import Blueprint, current_app
...
my_routes = Blueprint("my_routes", __name__)
...
@my_routes.route("/foo_path", methods=["POST"])
def foo_route():
...
my_aaa = current_app.config["aaa"]
import atexit
def _close_resources(app):
with app.app_context():
app.logger.warning("Closing resources")
current_app.config["aaa_resource"].close()
...
def create_app():
app = Flask(__name__)
def app_close_resources():
return _close_resources(app)
atexit.register(app_close_resources)
...