Skip to main content

A module to have a FastAPI HealthCheck for database, RabbitMQ server, Redis, MongoDB or external URI to validate their healths.

Project description

fastapi_healthz

Streamline your health checks with FastAPI using this user-friendly health check module. It serves as the foundational component for integrating and enhancing health checks within FastAPI.

This core module doesn't include any service checkers by default, but it offers a simple method for adding them. The reason for housing various modules separately is to accommodate the distinct dependencies required for each, ensuring that you only import the specific packages you need, thereby preventing any unnecessary package bloat.

This package is Pydantic v2 compliant.

Install

pip install fastapi-healthz or poetry add fastapi-healthz.

Eventually, you can partially install the package by running

pip install fastapi-healthz[redis]

pip install fastapi-healthz[rabbitmq]

pip install fastapi-healthz[database]

pip install fastapi-healthz[uri]

pip install fastapi-healthz[mongodb]

to install only the package you really need, with the required dependencies.

Adding Health Checks

Here is what you need to get started.

from fastapi import FastAPI
from fastapi_healthz import (
    HealthCheckRegistry,
    HealthCheckRabbitMQ,
    HealthCheckRedis,
    HealthCheckUri,
    HealthCheckDatabase,
    health_check_route,
)

app = FastAPI()

# Add Health Checks
_healthChecks = HealthCheckRegistry()

# SQLAlchemy
_healthChecks.add(HealthCheckDatabase(uri="dialect+driver://username:password@host:port/database"))
# RabbitMQ
_healthChecks.add(HealthCheckRabbitMQ(host="localhost", port=5672, vhost="", username="username", password="pwd", ssl=True))
# Redis
_healthChecks.add(HealthCheckRedis(uri="redis://[password:]host:port/database"))
# This will check external URI and validate the response that is returned.
_healthChecks.add(HealthCheckUri(uri="https://www.reddit.com/r/aww.json"))

app.add_api_route('/health', endpoint=health_check_route(registry=_healthChecks))

Returned Data

When you initiate a health check request, it will examine all the submitted entries and execute a fundamental query on each of them. If the results conform to expectations, a status code of 200 is returned. However, if an error is encountered, a 500 error response will be provided.

{
    "status":"Healthy",
    "totalTimeTaken":"0:00:00.671642",
    "entities":[
        {
            "alias":"db",
            "status":"Healthy",
            "timeTaken":"0:00:00.009619",
            "tags":["db"]
        },
        {
            "alias":"reddit",
            "status":"Unhealthy",
            "timeTaken":"0:00:00.661716",
            "tags":["uri"]
        }
    ]
}

Writing a custom checker

You can effortlessly extend the functionality of this foundational module by incorporating additional health checks for various services. Simply create a new service that imports the HealthCheckAbstract. Then, build the corresponding class around this abstract.

Once your service is prepared, integrate it into the HealthCheckRegistry, and you're all set to commence testing.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fastapi_healthz-0.5.1.tar.gz (7.6 kB view details)

Uploaded Source

Built Distribution

fastapi_healthz-0.5.1-py3-none-any.whl (10.2 kB view details)

Uploaded Python 3

File details

Details for the file fastapi_healthz-0.5.1.tar.gz.

File metadata

  • Download URL: fastapi_healthz-0.5.1.tar.gz
  • Upload date:
  • Size: 7.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.6.1 CPython/3.10.12 Linux/5.15.0-113-generic

File hashes

Hashes for fastapi_healthz-0.5.1.tar.gz
Algorithm Hash digest
SHA256 fd81ac8557c6a459ecb85f3fd5c8f2cf806d1a6fecedad437bd11693fd0c2c3b
MD5 473ee21e40dcdf107cf2db0c9f07a367
BLAKE2b-256 c368a9a5a49e2d338886989650873d862461e079055b70b0400268ed5d10eccc

See more details on using hashes here.

File details

Details for the file fastapi_healthz-0.5.1-py3-none-any.whl.

File metadata

  • Download URL: fastapi_healthz-0.5.1-py3-none-any.whl
  • Upload date:
  • Size: 10.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.6.1 CPython/3.10.12 Linux/5.15.0-113-generic

File hashes

Hashes for fastapi_healthz-0.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 aef9dd98e8eb72ffccd1fdbed46498fb6e2e37bd2c71cd00d4ff3287cc5b2825
MD5 eba65882db2d77ad62bac39cec53b618
BLAKE2b-256 843f0a8779976a48e3aaf8c6732e5abca576f68de74dfb7b770a1526f12d318e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page