Я запускаю приложение Connexion / Flask следующим образом:
import connexion
from flask_cors import CORS
from flask import g
app = connexion.App(__name__, specification_dir='swagger_server/swagger/')
app.add_api('swagger.yaml')
CORS(app.app)
with app.app.app_context():
g.foo = 'bar'
q = g.get('foo') # THIS WORKS
print('variable', q)
app.run(port=8088, use_reloader=False)
где-то еще в коде:
from flask import abort, g, current_app
def batch(machine=None): # noqa: E501
try:
app = current_app._get_current_object()
with app.app_context:
bq = g.get('foo', None) # DOES NOT WORK HERE
print('variable:', bq)
res = MYHandler(bq).batch(machine)
except:
abort(404)
return res
Это не работает - я не могу передать переменную ('bla') ко второму примеру кода.
Есть идеи, как правильно передать переменную контекста?Или как передать переменную и использовать ее глобально для всех обработчиков Flask?
Я пробовал это решение (которое работает): в первом разделе кода я бы добавил:
app.app.config['foo'] = 'bar'
и во втором разделе кода будет:
bq = current_app.config.get('foo')
Это решение не использует контекст приложения, и я не уверен, что это правильный путь.