Skip to main content

Automatically ty re-establishing the Django database connection when it gets lost.

Project description

Django Database Connection Retrier

License PyPi CircleCI

Automatically try to re-establish Django database connections when they fail due to DNS errors.


When the Django app (dbconnectionretrier) loads, a hook is installed in Django's BaseDatabaseWrapper.ensure_connection that catches django.db.OperationalError. If the error raised is a DNS error, the connction attempt is retried synchronously three times.


Tested on Django 2.0-2.3 and Python 3.7 and 3.8. Might work with other versions of Django and Python.

Installation

  1. Install the package from PyPi:

     $ pip install django-db-connection-retrier
    
  2. Add dbconnectionretrier to your INSTALLED_APPS:

     INSTALLED_APPS = [
         'dbconnectionretrier',
         ...
     ]
    

Manual usage

Adding dbconnectionretrier to INSTALLED_APPS enables automatic connection retrying. Want more granular control over patching?

Globally

from dbconnectionretrier.patch import patch_ensure_connection

# after this line executes, connection retrying is enabled
patch = patch_ensure_connection()

# after this line, the connection retrying is disabled
patch.rollback()

Context manager

from dbconnectionretrier.patch import patch_ensure_connection_contextual

with patch_ensure_connection_contextual():
    # all code inside this block benefits from connection retrying

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-db-connection-retrier-1.0b2.tar.gz (4.3 kB view details)

Uploaded Source

File details

Details for the file django-db-connection-retrier-1.0b2.tar.gz.

File metadata

  • Download URL: django-db-connection-retrier-1.0b2.tar.gz
  • Upload date:
  • Size: 4.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/49.2.0 requests-toolbelt/0.9.1 tqdm/4.56.2 CPython/3.8.2

File hashes

Hashes for django-db-connection-retrier-1.0b2.tar.gz
Algorithm Hash digest
SHA256 e388131605b870a8788a8aed886c8e89ef5fbd914b81bad1f6060cad98c24d7d
MD5 f14083aa1fdaa53aebd0f1f7507d37a2
BLAKE2b-256 743f6b6b791c4af14d59de136d04eec374b875a8c19fab9eb06f952d089815f5

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page