simingy / django-probes

Django app to run database liveness probe in a Kubernetes project

Home Page:https://pypi.org/project/django-probes/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Django-probes Latest version on PyPI

Build status Python versions Software license

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).

Why Should I Use This App?

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.

Installation

The easiest way to install django-probes is with pip

$ pip install django-probes

Basic Usage

  1. 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']

Command Line Options

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

Nominates a database to wait for, default: default

About

Django app to run database liveness probe in a Kubernetes project

https://pypi.org/project/django-probes/

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:Python 100.0%