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]

pip install fastapi-healthz[s3]

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,
    HealthCheckS3,
    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"))
# S3
_healthChecks.add(HealthCheckS3(endpoint="http://localhost:9000", access_key="access_key", secret_key="secret_key"))
# 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-1.3.3.tar.gz (8.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fastapi_healthz-1.3.3-py3-none-any.whl (11.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: fastapi_healthz-1.3.3.tar.gz
  • Upload date:
  • Size: 8.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.11.10 Linux/6.8.0-90-generic

File hashes

Hashes for fastapi_healthz-1.3.3.tar.gz
Algorithm Hash digest
SHA256 4590de0ee627424009d209b9190928f8f1af3bf3dd2b82372c2dfbf569d2ae64
MD5 4e7a3e999f55d1089ea7302654bf1148
BLAKE2b-256 4bced624155fdca5a95a5c8c2dde9f779b1fe3696b531822441b1faada3cf315

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fastapi_healthz-1.3.3-py3-none-any.whl
  • Upload date:
  • Size: 11.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.11.10 Linux/6.8.0-90-generic

File hashes

Hashes for fastapi_healthz-1.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 7d37b6dbff1c10cc2360a11ab815f7fd8aaf7a84c2075732bdc3e798f62634fc
MD5 fa5dcdd52350cc95277796496ea4c9aa
BLAKE2b-256 ffaa96f86148fd30fc914694a5cae530af7bfea6c2332b35433ff2923f4290fb

See more details on using hashes here.

Supported by

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