%global _empty_manifest_terminate_build 0 Name: python-flask-healthz Version: 0.0.3 Release: 1 Summary: A simple module to allow you to easily add health endpoints to your Flask application License: BSD-3-Clause URL: https://github.com/fedora-infra/flask-healthz Source0: https://mirrors.nju.edu.cn/pypi/web/packages/14/2c/7a751a7edd0600e7dae1cd8a43104b44701b829298fccda91ec0a16a4bf5/flask-healthz-0.0.3.tar.gz BuildArch: noarch Requires: python3-flask %description # Flask-Healthz Define endpoints in your Flask application that Kubernetes can use as [liveness and readiness probes](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/). ## Setting it up ### Blueprint Register the blueprint on your Flask application: ```python from flask import Flask from flask_healthz import healthz app = Flask(__name__) app.register_blueprint(healthz, url_prefix="/healthz") ``` Define the functions you want to use to check health. To signal an error, raise `flask_healthz.HealthError`. ```python from flask_healthz import HealthError def liveness(): pass def readiness(): try: connect_database() except Exception: raise HealthError("Can't connect to the database") ``` Now point to those functions in the Flask configuration: ```python HEALTHZ = { "live": "yourapp.checks.liveness", "ready": "yourapp.checks.readiness", } ``` It is possible to directly set callables in the configuration, so you could write something like: ```python HEALTHZ = { "live": lambda: None, } ``` Check that the endpoints actually work: ``` $ curl http://localhost/yourapp/healthz/live {"status": 200, "title": "OK"} $ curl http://localhost/yourapp/healthz/ready {"status": 200, "title": "OK"} ``` Now your can configure Kubernetes or OpenShift to check for those endpoints. ### Extension You can also use the provided Flask extension to register the `healthz` blueprint: ```python from flask import Flask from flask_healthz import Healthz app = Flask(__name__) Healthz(app) ``` The rest of the configuration is identical. The extension has an additional option, `no_log`, that can disable logging of the HTTP requests handled by your healthz endpoints, to avoid cluttering your web log files with automated requests. At the moment, only the [gunicorn](https://gunicorn.org/) web server is supported. ```python Healthz(app, no_log=True) ``` ## Examples Here's an example of how you could use flask-healthz in OpenShift's `deploymentconfig`: ```yaml 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 ``` Some projects that have setup flask-healthz: - Noggin: https://github.com/fedora-infra/noggin/pull/287 - FASJSON: https://github.com/fedora-infra/fasjson/pull/81 ## License Copyright 2020-2021 Red Hat Flask-Healthz is licensed under the same license as Flask itself: BSD 3-clause. [![codecov](https://codecov.io/gh/fedora-infra/flask-healthz/branch/dev/graph/badge.svg?token=lwlZLiSImq)](https://codecov.io/gh/fedora-infra/flask-healthz) %package -n python3-flask-healthz Summary: A simple module to allow you to easily add health endpoints to your Flask application Provides: python-flask-healthz BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-flask-healthz # Flask-Healthz Define endpoints in your Flask application that Kubernetes can use as [liveness and readiness probes](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/). ## Setting it up ### Blueprint Register the blueprint on your Flask application: ```python from flask import Flask from flask_healthz import healthz app = Flask(__name__) app.register_blueprint(healthz, url_prefix="/healthz") ``` Define the functions you want to use to check health. To signal an error, raise `flask_healthz.HealthError`. ```python from flask_healthz import HealthError def liveness(): pass def readiness(): try: connect_database() except Exception: raise HealthError("Can't connect to the database") ``` Now point to those functions in the Flask configuration: ```python HEALTHZ = { "live": "yourapp.checks.liveness", "ready": "yourapp.checks.readiness", } ``` It is possible to directly set callables in the configuration, so you could write something like: ```python HEALTHZ = { "live": lambda: None, } ``` Check that the endpoints actually work: ``` $ curl http://localhost/yourapp/healthz/live {"status": 200, "title": "OK"} $ curl http://localhost/yourapp/healthz/ready {"status": 200, "title": "OK"} ``` Now your can configure Kubernetes or OpenShift to check for those endpoints. ### Extension You can also use the provided Flask extension to register the `healthz` blueprint: ```python from flask import Flask from flask_healthz import Healthz app = Flask(__name__) Healthz(app) ``` The rest of the configuration is identical. The extension has an additional option, `no_log`, that can disable logging of the HTTP requests handled by your healthz endpoints, to avoid cluttering your web log files with automated requests. At the moment, only the [gunicorn](https://gunicorn.org/) web server is supported. ```python Healthz(app, no_log=True) ``` ## Examples Here's an example of how you could use flask-healthz in OpenShift's `deploymentconfig`: ```yaml 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 ``` Some projects that have setup flask-healthz: - Noggin: https://github.com/fedora-infra/noggin/pull/287 - FASJSON: https://github.com/fedora-infra/fasjson/pull/81 ## License Copyright 2020-2021 Red Hat Flask-Healthz is licensed under the same license as Flask itself: BSD 3-clause. [![codecov](https://codecov.io/gh/fedora-infra/flask-healthz/branch/dev/graph/badge.svg?token=lwlZLiSImq)](https://codecov.io/gh/fedora-infra/flask-healthz) %package help Summary: Development documents and examples for flask-healthz Provides: python3-flask-healthz-doc %description help # Flask-Healthz Define endpoints in your Flask application that Kubernetes can use as [liveness and readiness probes](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/). ## Setting it up ### Blueprint Register the blueprint on your Flask application: ```python from flask import Flask from flask_healthz import healthz app = Flask(__name__) app.register_blueprint(healthz, url_prefix="/healthz") ``` Define the functions you want to use to check health. To signal an error, raise `flask_healthz.HealthError`. ```python from flask_healthz import HealthError def liveness(): pass def readiness(): try: connect_database() except Exception: raise HealthError("Can't connect to the database") ``` Now point to those functions in the Flask configuration: ```python HEALTHZ = { "live": "yourapp.checks.liveness", "ready": "yourapp.checks.readiness", } ``` It is possible to directly set callables in the configuration, so you could write something like: ```python HEALTHZ = { "live": lambda: None, } ``` Check that the endpoints actually work: ``` $ curl http://localhost/yourapp/healthz/live {"status": 200, "title": "OK"} $ curl http://localhost/yourapp/healthz/ready {"status": 200, "title": "OK"} ``` Now your can configure Kubernetes or OpenShift to check for those endpoints. ### Extension You can also use the provided Flask extension to register the `healthz` blueprint: ```python from flask import Flask from flask_healthz import Healthz app = Flask(__name__) Healthz(app) ``` The rest of the configuration is identical. The extension has an additional option, `no_log`, that can disable logging of the HTTP requests handled by your healthz endpoints, to avoid cluttering your web log files with automated requests. At the moment, only the [gunicorn](https://gunicorn.org/) web server is supported. ```python Healthz(app, no_log=True) ``` ## Examples Here's an example of how you could use flask-healthz in OpenShift's `deploymentconfig`: ```yaml 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 ``` Some projects that have setup flask-healthz: - Noggin: https://github.com/fedora-infra/noggin/pull/287 - FASJSON: https://github.com/fedora-infra/fasjson/pull/81 ## License Copyright 2020-2021 Red Hat Flask-Healthz is licensed under the same license as Flask itself: BSD 3-clause. [![codecov](https://codecov.io/gh/fedora-infra/flask-healthz/branch/dev/graph/badge.svg?token=lwlZLiSImq)](https://codecov.io/gh/fedora-infra/flask-healthz) %prep %autosetup -n flask-healthz-0.0.3 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-flask-healthz -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Fri Apr 21 2023 Python_Bot - 0.0.3-1 - Package Spec generated