Skip to content

developersociety/django-postgres-lock

Repository files navigation

Django Postgres Lock

A Django management command which will run a command inside a Postgres lock, ensuring that only a single instance of the inner command will run.

Installation

Using pip:

$ pip install django-postgres-lock

Edit your Django project's settings module, and add the application to INSTALLED_APPS:

INSTALLED_APPS = [
    # ...
    "postgres_lock",
    # ...
]

Usage

To run clearsessions with the default lock:

$ ./manage.py command_lock -- ./manage.py clearsessions

To use a unique lock for this task:

$ ./manage.py command_lock --name clearsessions -- ./manage.py clearsessions

To exit immediately if a lock can't be acquired:

$ ./manage.py command_lock --try --name clearsessions -- ./manage.py clearsessions

To ignore a lock failure and return a successful exit code:

$ ./manage.py command_lock --try --ignore-fail --name clearsessions -- ./manage.py clearsessions