Add an in-process CLI runner for deployment probes.
- Add
python manage.py deploy_probes <healthz|readyz|startupz|version>management command. - Keep the CLI JSON payload contract aligned with the HTTP probe responses.
- Add explicit CLI exit codes for probe pass, probe failure, invalid configuration, and unexpected execution failure.
- Extract shared probe execution into a common runner used by both HTTP views and the CLI.
- Document CLI usage for CI/CD, pre-deploy validation, and local debugging.
Add Django storage probe checks for deployment readiness validation.
- Add builtin
storagechecks for Django storage aliases, including S3-style backends. - Support
existsmode for sentinel object validation. - Support
writemode for temporary write/delete validation. - Add Django system checks for invalid storage probe configuration.
- Update documentation with storage and S3 usage examples.
This release improves probe security for deployments behind trusted reverse proxies such as ALB, Nginx, and Kubernetes ingress.
- Add
TRUSTED_PROXY_NETWORKSfor explicitly trusted proxy CIDRs. - Add
CLIENT_IP_HEADERfor resolving the original client IP from trusted proxy headers. - Keep
REMOTE_ADDRas the safe default when trusted proxy settings are not configured. - Ignore forwarded IP headers unless the request comes from a trusted proxy network.
- Add Django system checks for proxy CIDR and client IP header validation.
- Expand tests and documentation for reverse proxy probe deployments.
django-deploy-probes provides lightweight deployment probe endpoints for Django applications.
This release is focused on deployment validation workflows such as blue/green deployments, rolling deployments, Kubernetes probes, Docker health checks, Nginx upstream switching, and CI/CD verification.
- Add
healthzendpoint for process liveness checks. - Add
readyzendpoint for traffic readiness checks. - Add
startupzendpoint for startup/bootstrap checks. - Add
versionendpoint for deployed application metadata. - Add builtin
storagechecks for Django storage aliases, including S3-style backends. - Support both include-style and import-style Django URL configuration.
- Support optional readiness checks for Django databases, Redis, Celery, migrations, and custom checks.
- Add optional package extras for Redis and Celery integrations.
- Add basic probe access controls for internal IP and header token validation.
- Add configurable internal IP networks, secret-safe custom check messages, and optional safe failure reasons.
- Add GitHub Actions CI and Trusted Publishing release workflow.
Install the base package:
pip install django-deploy-probesInstall optional Redis and Celery readiness check dependencies:
pip install "django-deploy-probes[redis]"
pip install "django-deploy-probes[celery]"
pip install "django-deploy-probes[all]"Include all probe URLs:
from django.urls import include, path
urlpatterns = [
path("", include("django_deploy_probes.urls")),
]This exposes:
GET /healthzGET /readyzGET /startupzGET /version
Alternatively, import the views directly:
from django.urls import path
from django_deploy_probes.views import healthz, readyz, startupz, version
urlpatterns = [
path("healthz/", healthz),
path("readyz/", readyz),
path("startupz/", startupz),
path("version/", version),
]Configure deployment metadata and readiness checks in Django settings:
DEPLOY_PROBES = {
"SERVICE_NAME": "my-django-app",
"ENVIRONMENT": "prod",
"VERSION": "1.2.0",
"COMMIT": "a1b2c3d",
"BRANCH": "main",
"BUILD_TIME": "2026-05-13T10:00:00+09:00",
"SLOT": "green",
"READY_CHECKS": [
"database",
"redis",
"celery",
],
"DATABASES": [
"default",
],
"REDIS": {
"default": {
"LOCATION": "redis://localhost:6379/0",
"TIMEOUT": 1.0,
},
},
"CELERY": {
"BROKER": True,
"WORKERS": False,
"RESULT_BACKEND": False,
"TIMEOUT": 1.0,
},
"DETAIL_LEVEL": "none",
"EXPOSE_CHECK_MESSAGES": False,
}GET /healthz returns 200 when the Django process is alive:
{
"status": "ok"
}GET /readyz returns 200 when all enabled readiness checks pass:
{
"status": "ready",
"checks": {
"database.default": "ok",
"redis.default": "ok",
"celery.broker": "ok"
}
}GET /readyz returns 503 when any enabled readiness check fails:
{
"status": "not_ready",
"checks": {
"database.default": "ok",
"redis.default": "fail",
"celery.broker": "ok"
}
}GET /version returns configured deployment metadata:
{
"service": "my-django-app",
"environment": "prod",
"version": "1.2.0",
"commit": "a1b2c3d",
"branch": "main",
"build_time": "2026-05-13T10:00:00+09:00",
"slot": "green"
}- Python: 3.9+
- Django: 4.2+
- Redis extra:
redis>=4.5 - Celery extra:
celery>=5.3
Package classifiers include Python 3.9 through 3.14 and Django 4.2 / 5.x.
healthzis intentionally minimal and does not check databases, cache, Redis, Celery, migrations, or external services.readyzonly checks dependencies that are explicitly enabled inDEPLOY_PROBES["READY_CHECKS"].- Redis and Celery checks require installing the corresponding optional extras.
- Security checks use
REMOTE_ADDRby default and do not trustX-Forwarded-For; configure trusted proxy handling separately at the application or infrastructure layer. - Custom readiness check messages are hidden by default; do not include secrets or sensitive values
if
EXPOSE_CHECK_MESSAGES=True. - This package is not a metrics, tracing, APM, or full monitoring system.
- Expand documentation for production deployment patterns.
- Add more examples for Kubernetes, Docker, Nginx, and CI/CD validation.
- Add more examples for custom readiness checks.
- Consider richer readiness check result details while keeping secret-safe defaults.
- Continue compatibility testing across supported Python and Django versions.