philiprehberger-health-check
Health check endpoint builder for web applications.
Installation
pip install philiprehberger-health-check
Usage
from philiprehberger_health_check import HealthCheck, checks
hc = HealthCheck()
hc.add("database", lambda: True)
hc.add(*checks.tcp("redis", "localhost", 6379))
hc.add(*checks.disk_space("disk", "/", min_free_gb=2))
result = hc.run()
print(result.status) # "healthy" or "unhealthy"
for check in result.checks:
print(f"{check.name}: {'OK' if check.healthy else check.message}")
Check Dependencies
from philiprehberger_health_check import HealthCheck
hc = HealthCheck()
hc.add("database", check_db)
hc.add("migrations", check_migrations, depends_on=["database"])
result = hc.run()
# If "database" fails, "migrations" is skipped automatically
Per-Check Timeouts
from philiprehberger_health_check import HealthCheck
hc = HealthCheck(timeout=10.0) # global timeout
hc.add("fast-db", check_db, timeout=2.0) # override for this check
hc.add("slow-report", generate_report, timeout=30.0)
result = hc.run()
# Each check uses its own timeout; others fall back to the global 10s
Remediation Actions
from philiprehberger_health_check import CheckResult, HealthCheck
def restart_cache(result: CheckResult) -> None:
print(f"Restarting cache after failure: {result.message}")
hc = HealthCheck()
hc.add("cache", check_cache, on_failure=restart_cache)
result = hc.run()
# If "cache" fails, restart_cache is called automatically
Check History and Metrics
from philiprehberger_health_check import HealthCheck
hc = HealthCheck(history_size=50)
hc.add("database", check_db)
hc.run()
hc.run()
hc.run()
history = hc.history("database") # list of past CheckResult objects
rate = hc.success_rate("database") # float between 0.0 and 1.0
Async Execution
import asyncio
from philiprehberger_health_check import HealthCheck
hc = HealthCheck()
hc.add("database", check_db)
hc.add("cache", check_cache)
hc.add("migrations", check_migrations, depends_on=["database"])
result = await hc.run_async()
# Independent checks run concurrently; dependencies are respected
Serializing for HTTP
from philiprehberger_health_check import HealthCheck
hc = HealthCheck()
hc.add("database", lambda: True)
# Convert a HealthResult into a JSON-serializable dict
result = hc.run()
body = result.to_dict()
# {"status": "healthy", "uptime_seconds": 0.01, "checks": [...]}
# Or get a (status_code, body_dict) tuple ready for any web framework
status, body = hc.to_response()
# status == 200 when healthy, 503 when unhealthy
# Override the status codes if you need to
status, body = hc.to_response(ok_status=204, fail_status=500)
Built-in Checks
from philiprehberger_health_check import HealthCheck, checks
hc = HealthCheck()
# TCP connectivity
hc.add(*checks.tcp("postgres", "db.example.com", 5432, timeout=3))
# Disk space
hc.add(*checks.disk_space("storage", "/data", min_free_gb=5))
# Memory usage (Linux only, skipped on other platforms)
hc.add(*checks.memory("ram", max_percent=85))
# Custom check
hc.add(*checks.custom("cache", lambda: cache.ping()))
API
| Function / Class | Description |
|---|---|
HealthCheck(timeout=30.0, history_size=100) |
Create a health check builder with optional global timeout and history size |
hc.add(name, fn, depends_on=None, timeout=None, on_failure=None) |
Register a check with optional dependencies, per-check timeout, and failure callback |
hc.run() |
Run all checks sequentially and return HealthResult |
hc.run_async() |
Run checks concurrently, respecting dependency order |
hc.history(name) |
Return list of past CheckResult objects for a check |
hc.success_rate(name) |
Return success rate as a float between 0.0 and 1.0 |
hc.to_response(ok_status=200, fail_status=503) |
Run checks and return (http_status, body_dict) for web frameworks |
checks.tcp(name, host, port, timeout=2) |
TCP connectivity check |
checks.disk_space(name, path, min_free_gb=1) |
Disk free space check |
checks.memory(name, max_percent=90) |
Memory usage check (Linux) |
checks.custom(name, fn) |
Wrap any callable as a check |
CheckResult |
Dataclass: name, healthy, message, duration_ms |
HealthResult |
Dataclass: status, checks, uptime_seconds |
HealthResult.to_dict() |
Return a JSON-serializable dict suitable for an HTTP response |
Development
pip install -e .
python -m pytest tests/ -v
Support
If you find this project useful:
License
Metadata
Release files for philiprehberger-health-check 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| philiprehberger_health_check-0.4.0.tar.gz | 180.4 kB | Without provenance | Details for philiprehberger_health_check-0.4.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| philiprehberger_health_check-0.4.0-py3-none-any.whl | Python 3 | none | any | Details for philiprehberger_health_check-0.4.0-py3-none-any.whl |
Total release size: 188.7 kB
Release files / philiprehberger_health_check-0.4.0.tar.gz
| Download URL | philiprehberger_health_check-0.4.0.tar.gz |
|---|---|
| Size | 180.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
28649ea8ccb4da36e6069c5f1dc2e9a8e7a2c0c432363c225056baf90f69827a
|
|
BLAKE2b-256 checksum How to use checksums |
cca0925e7b1fc608f27729f936bb56260d38fddb985a7f5d5711df50d80acca5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.13
|
Release files / philiprehberger_health_check-0.4.0-py3-none-any.whl
| Download URL | philiprehberger_health_check-0.4.0-py3-none-any.whl |
|---|---|
| Size | 8.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
aeaa4f14bac74c53f5254b229472d62725cd4d668e585451e83be96f1415eca8
|
|
BLAKE2b-256 checksum How to use checksums |
71aa0623173f4ab1cca1c1bd28f3b42230b4e3cded708ed5497f3041e4b3ae32
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.13
|
Security for philiprehberger-health-check 0.4.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.