Как передать переменную в контекст приложения Connexion Flask? - PullRequest
0 голосов
/ 27 декабря 2018

Я запускаю приложение 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')

Это решение не использует контекст приложения, и я не уверен, что это правильный путь.

1 Ответ

0 голосов
/ 27 декабря 2018

Эти ответы SO , описывающие, что содержимое в запросе и вне запроса могут помочь вам.

...