Choosing a Django Health Check Package¶
Several Django packages expose health information, but they optimize for different jobs. Choose by the decision that consumes the result: an orchestrator deciding whether to route traffic, an external monitor inspecting dependencies, or a startup script waiting for a service.
At a Glance¶
| Capability | django-deploy-probes | django-health-check | django-watchman | django-alive | django-probes |
|---|---|---|---|---|---|
| Primary job | Deployment and traffic-routing decisions | Extensible service health monitoring | Backing-service status and dashboard | Lightweight alive/health endpoints | Wait for services during startup |
| Dedicated liveness endpoint | /healthz |
Deployment-specific configuration | /watchman/ping/ and bare status views |
/-/alive/ |
No HTTP endpoint |
| Dedicated readiness endpoint | /readyz |
One extensible health endpoint | One status endpoint | /-/health/ |
No HTTP endpoint |
| Dedicated startup endpoint | /startupz |
Not a separate contract | Not a separate contract | Not a separate contract | Management command |
| Deployment metadata | /version with optional build fields |
Not a built-in deployment contract | Not a built-in deployment contract | Not a built-in deployment contract | No |
| CLI execution | Same payload contract as HTTP | health_check command |
Management command | healthcheck command |
Core workflow |
| Built-in focus | Database, migrations, Redis, Celery, storage | Broad plugin catalog including cache and system resources | Database, cache, email, storage, custom checks | Database, cache, static files, migrations | Service availability before startup |
| Access controls | Internal CIDRs, trusted proxies, header token | Deployment-specific | Token authentication | Deployment-specific | Not applicable |
The table describes built-in behavior, not everything that can be implemented with custom checks. Review each project's current documentation before migrating an existing production deployment.
When django-deploy-probes Fits¶
Use this package when the important questions are:
- Is the Django process alive without touching an external dependency?
- Is this instance ready to receive traffic now?
- Have startup requirements, such as migrations, completed?
- Is the expected version, commit, or deployment slot running?
- Can CI and HTTP callers evaluate the same probe payload?
These questions map directly to Kubernetes liveness, readiness, and startup probes, Docker health checks, load balancer routing, blue-green switching, deployment verification, and rollback checks.
When Another Package Fits Better¶
Choose django-health-check when you want a large plugin catalog, HTML and JSON health output, or host-level checks such as disk and memory.
Choose django-watchman when you want a backing-service dashboard, a single status endpoint, token authentication, and integrations aimed at external monitoring.
Choose django-alive when two lightweight alive and health endpoints, plus a small custom-check interface, cover your deployment.
Choose django-probes when a startup script or init container needs to wait for a database or another service and HTTP routing probes are unnecessary.
These packages can coexist when the consumers are different. For example, an orchestrator can use
django-deploy-probes for traffic decisions while an internal monitoring system uses a richer
dashboard. Avoid running expensive monitoring checks from a high-frequency liveness probe.
Scope Boundary¶
django-deploy-probes intentionally does not store probe history, send alerts, aggregate metrics,
or replace an observability platform. It returns a current, secret-safe deployment decision. Use
monitoring and tracing systems for trends, alerting, diagnosis, and capacity planning.