Используйте несколько Azure Application Insights в одном приложении Flask

Привет, у меня есть приложение flask, которое создается как образ докера и служит API.

этот образ развернут в нескольких средах (DEV/QA/PROD)

я хочу использовать applicationInsight для каждой среды

использование одного приложения Insight работает нормально

вот фрагмент кода

      app.config['APPINSIGHTS_INSTRUMENTATIONKEY'] = APPINSIGHTS_INSTRUMENTATIONKEY
appinsights = AppInsights(app)

@app.after_request
def after_request(response):
    appinsights.flush()
    return response

но чтобы иметь несколько приложений, мне нужно настроить app.config с ключом понимания приложения.

я думал об этом решении, которое содержит ошибки

вот фрагмент:

      app = Flask(__name__)
def monitor(key):
    app.config['APPINSIGHTS_INSTRUMENTATIONKEY'] = key
    appinsights = AppInsights(app)
    
@app.after_request
def after_request(response):
    appinsights.flush()
    return response

@app.route("/")
def hello():
    hostname = urlparse(request.base_url).hostname
    print(hostname)
    if hostname == "dev url":
       print('Dev')
       monitor('3ed57a90-********')
    if hostname == "prod url":
       print('prod')
       monitor('941caeca-********-******')
    return "hello"

но, видимо, Flask не может обработать свойства после выполнения запроса

сообщение об ошибке :

AssertionError: метод установки errorhandler больше не может быть вызван в приложении. Он уже обработал свой первый запрос, любые изменения не будут применяться последовательно. Прежде чем запускать приложение, убедитесь, что все импорты, декораторы, функции и т. д., необходимые для настройки приложения, выполнены.

я надеюсь, что кто-то может помочь мне найти лучшее решение

заранее спасибо

0 ответов

Другие вопросы по тегам