跳转到主要内容

一个简单的模块,允许您轻松地将健康端点添加到您的Flask应用程序

项目描述

Flask-Healthz

在您的Flask应用程序中定义端点,Kubernetes可以使用这些端点作为存活和就绪探针

设置方法

蓝图

在您的Flask应用程序上注册蓝图

from flask import Flask
from flask_healthz import healthz

app = Flask(__name__)
app.register_blueprint(healthz, url_prefix="/healthz")

定义您想要用来检查健康的函数。要指示错误,请抛出 flask_healthz.HealthError

from flask_healthz import HealthError

def liveness():
    pass

def readiness():
    try:
        connect_database()
    except Exception:
        raise HealthError("Can't connect to the database")

现在将那些函数指向Flask配置

HEALTHZ = {
    "live": "yourapp.checks.liveness",
    "ready": "yourapp.checks.readiness",
}

您可以直接在配置中设置可调用对象,因此您可以编写类似以下内容:

HEALTHZ = {
    "live": lambda: None,
}

检查端点是否真正工作

$ curl http://localhost/yourapp/healthz/live
{"status": 200, "title": "OK"}
$ curl http://localhost/yourapp/healthz/ready
{"status": 200, "title": "OK"}

现在您可以配置Kubernetes或OpenShift来检查这些端点。

扩展

您还可以使用提供的Flask扩展来注册 healthz 蓝图

from flask import Flask
from flask_healthz import Healthz

app = Flask(__name__)
Healthz(app)

其余的配置是相同的。

扩展有一个额外的选项,no_log,可以禁用健康端点处理的HTTP请求的日志记录,以避免在Web日志文件中自动请求的混乱。目前仅支持gunicorn Web服务器。

Healthz(app, no_log=True)

示例

以下是一个如何在OpenShift的deploymentconfig中使用flask-healthz的示例

kind: DeploymentConfig
spec:
  [...]
  template:
    [...]
    spec:
      containers:
      - name: yourapp
        [...]
        livenessProbe:
          httpGet:
            path: /healthz/live
            port: 8080
          initialDelaySeconds: 5
          timeoutSeconds: 1
        readinessProbe:
          httpGet:
            path: /healthz/ready
            port: 8080
          initialDelaySeconds: 5
          timeoutSeconds: 1

已设置flask-healthz的一些项目

许可

版权所有 2020-2021 Red Hat

Flask-Healthz的许可与Flask本身相同:BSD 3条款。

codecov

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

flask_healthz-1.0.1.tar.gz (5.3 kB 查看哈希值)

上传时间 源代码

构建分发

flask_healthz-1.0.1-py3-none-any.whl (7.4 kB 查看哈希值)

上传时间 Python 3

支持