Skip to main content

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

项目描述

Flask-Healthz

在 Flask 应用程序中定义 Kubernetes 可以用作 liveness 和 readiness 探针的端点。

设置它

蓝图

在 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可以禁用对 healthz 端点处理的 HTTP 请求的日志记录,以避免自动请求使您的 Web 日志文件混乱。目前,仅支持gunicorn Web 服务器。

Healthz(app, no_log=True)

例子

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

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 红帽

Flask-Healthz 在与 Flask 本身相同的许可下获得许可:BSD 3-clause。

编解码器

项目详情


下载文件

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

源分布

flask-healthz-0.0.3.tar.gz (6.4 kB 查看哈希

已上传 source

内置分布

flask_healthz-0.0.3-py3-none-any.whl (7.3 kB 查看哈希

已上传 py3