如何跟踪一个变量的值在烧瓶应用程序的整个生命周期中都不断变化?

问题描述 投票:0回答:1

我有一个Flask应用程序,该应用程序具有一些端点,其中3个端点用于管理Flask应用程序。有一个变量health_status,其值最初是“ UP”-字符串。

/ check =检查烧瓶应用程序的状态。无论是向上还是向下。

// up =将变量的值更改为“ UP”,该变量的值在提供任何请求之前用作检查]

/ down =将变量的值更改为“ DOWN

health_status为“ UP”时,该应用程序可以为其提供的任何端点服务。当它为“ DOWN”时,对于任何API终结点excep / up终结点,它仅返回500错误,从而使服务器恢复健康状态(我在使用执行任何API调用之前先进行检查@app.before_request在Flask中)。

我想知道的是这是否可取。是否有其他选择可以执行此任务?

health_check.py:

from flask.json import jsonify
from app.common.views.api_view import APIView
from app import global_config

class View(APIView):
    def check(self):
        return jsonify({'status': f"Workload service is {global_config.health_status}"})
    def up(self):
        global_config.health_status = "UP"
        return jsonify({'status': "Workload service is up and running"})
    def down(self):
        global_config.health_status = "DOWN"
        return jsonify({'status': f"Workload service stopped"})

global_config.py:

workload_health_status = "UP"

应用程序/ __ INIT __ PY:

from flask import Flask, request, jsonify
from app import global_config
excluded_paths = ['/api/health/up/', '/api/health/down/']

def register_blueprints(app):
    from .health import healthcheck_api
    app.register_blueprint(healthcheck_api, url_prefix="/api/health")

def create_app(**kwargs):
    app = Flask(__name__, **kwargs)
    register_blueprints(app)
    @app.before_request
    def health_check_test():
        if request.path not in excluded_paths and global_config.workload_health_status == "DOWN":
            return jsonify({"status": "Workload service is NOT running"}), 500
    return app
python python-3.x flask global-variables flask-appbuilder
1个回答
0
投票

您可以只使用应用程序的内置config object并从应用程序中的任何位置查询/更新它,例如app.config['health_status'] = 'UP'。这将消除对global_config对象的需要。使用@app.before_request检查运行状况可能仍然是检查此值的最简便方法。

© www.soinside.com 2019 - 2024. All rights reserved.