Provides a Django management command to check whether the primary database is ready to accept connections.
Run this command in a Kubernetes or OpenShift Init Container to make your Django application wait until the database is available (e.g. to run database migrations).
wait_for_database
is a single command for all database engines Django supports. It automatically checks the database you have configured in your Django project settings. No need to code a specific wait command for Postgres, MariaDB, Oracle, etc., no need to pull a database engine specific container just for running the database readiness check.
The easiest way to install django-probes is with pip
$ pip install django-probes
- Add django-probes to your Django application:
INSTALLED_APPS = [
...
'django_probes',
]
2. Add an Init Container to your Kubernetes/OpenShift deployment configuration, which calls the wait_for_database
management command:
- kind: Deployment
apiVersion: apps/v1
spec:
template:
spec:
initContainers:
- name: wait-for-database
image: my-django-app:latest
envFrom:
- secretRef:
name: django
command: ['python', 'manage.py', 'wait_for_database']
The management command comes with sane defaults, which you can override if needed:
- --timeout, -t
how long to wait for the database before timing out (seconds), default:
180
- --stable, -s
how long to observe whether connection is stable (seconds), default:
5
- --wait-when-down, -d
delay between checks when database is down (seconds), default:
2
- --wait-when-alive, -a
delay between checks when database is up (seconds), default:
1
- --database
which database of
settings.DATABASES
to wait for, default:default