Skip to main content

Unified health/ready endpoints + checks for services (Django/FastAPI).

Project description

PulseCheck

Unified health, liveness, and readiness checks for Python microservices.

PulseCheck is a framework-agnostic health check library designed for modern Python services.

It provides a pluggable health engine with adapters for FastAPI and Django, built with Kubernetes readiness/liveness semantics in mind.


Features

  • Framework-agnostic core

  • FastAPI adapter

  • Django adapter

  • Pluggable dependency checks:

    • SQLAlchemy (async)
    • Django ORM
    • Redis (sync & async)
    • RabbitMQ (Kombu)
    • Celery worker inspection
    • HTTP dependency checks
  • Configurable timeouts

  • Degraded vs unhealthy states

  • Optional dependency extras

  • Zero forced framework pollution

  • Production-ready JSON schema

  • Kubernetes-compatible


Installation

Install core only:

pip install pulsecheck-py

Install with FastAPI support:

pip install pulsecheck-py[fastapi]

Install with Django support:

pip install pulsecheck-py[django]

Install with multiple dependency checks:

pip install pulsecheck-py[fastapi,redis_async,sqlalchemy_async,rabbitmq,celery]

FastAPI Example

from fastapi import FastAPI 
from pulsecheck.core import HealthRegistry 
from pulsecheck.core.checks import SQLAlchemyAsyncCheck 
from pulsecheck.fastapi import make_health_router

app = FastAPI()

registry = HealthRegistry(environment="prod") 
registry.register(SQLAlchemyAsyncCheck(engine))

app.include_router(make_health_router(registry))

Endpoints:

GET /health 
GET /health/live 
GET /health/ready

Django Example

from pulsecheck.core import HealthRegistry 
from pulsecheck.core.checks import DjangoDBCheck 
from pulsecheck.django import make_urlpatterns

registry = HealthRegistry(environment="prod") 
registry.register(DjangoDBCheck())

urlpatterns = [
    *make_urlpatterns(registry)
]

Health Response Format

{
  "status": "HEALTHY",
  "timestamp": "2026-02-15T12:34:56Z",
  "environment": "prod",
  "checks": {
      "database": {
          "status": "HEALTHY",
          "response_time_ms": 4.3
      }
  }
}

States:

  • HEALTHY
  • DEGRADED
  • UNHEALTHY

Design Philosophy

PulseCheck separates:

  • Core health aggregation logic

  • Dependency checks

  • Framework adapters

This ensures:

  • No tight framework coupling

  • Optional extras per ecosystem

  • Clean dependency graphs

  • Compatibility across service architectures

Optional Dependencies (Extras)

Extra Installs
fastapi FastAPI adapter
django Django adapter
redis_async Async Redis check
redis_sync Sync Redis check
rabbitmq Kombu-based AMQP check
celery Celery inspect check
sqlalchemy_async Async SQLAlchemy check
http HTTP dependency check

Testing

PulseCheck is tested against:

  • Python 3.10+

  • FastAPI

  • Django

  • Async and sync dependency scenarios


Intended Use

PulseCheck is designed for:

  • Microservices

  • Containerized applications

  • Kubernetes environments

  • Internal APIs

  • Distributed systems

It is not a monitoring system.
It is a lightweight dependency availability indicator.


Contributing

Issues and pull requests are welcome.

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

pulsecheck_py-0.1.3.tar.gz (3.7 kB view details)

Uploaded Source

Built Distribution

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

pulsecheck_py-0.1.3-py3-none-any.whl (3.8 kB view details)

Uploaded Python 3

File details

Details for the file pulsecheck_py-0.1.3.tar.gz.

File metadata

  • Download URL: pulsecheck_py-0.1.3.tar.gz
  • Upload date:
  • Size: 3.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pulsecheck_py-0.1.3.tar.gz
Algorithm Hash digest
SHA256 5e542ac31145534cf31251aa5bc85f6af79d3fedd4d6819f84179a9f01410200
MD5 59a50004bb7f3768cb9b9b8d01a94b70
BLAKE2b-256 373ac1fd93e96dae2471ccd6e18a5acb869f1d810e58be5aca13d4028dd1542f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pulsecheck_py-0.1.3.tar.gz:

Publisher: publish.yaml on tase-nikol/pulsecheck-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pulsecheck_py-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: pulsecheck_py-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 3.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pulsecheck_py-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 b28dcb823f2f684b63a8494d5794389e00addc7f671364a9cd3f0ae21330f01f
MD5 97a37d7dd842d093a41b726b2b19776d
BLAKE2b-256 577bfe1c6bfd1d456c3e701c3ebc3d683c8d4221361c3ea7ec48b9aa674fa01e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pulsecheck_py-0.1.3-py3-none-any.whl:

Publisher: publish.yaml on tase-nikol/pulsecheck-py

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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