This is a simple Postgres Connection Pooling backend for Django 1.4+, powered by the lovely and beautiful SQLAlchemy.
Using Django-PostgresPool is simple, just set django_postgrespool
as your connection engine:
DATABASES = { 'default': { 'ENGINE': 'django_postgrespool'
If you're using the dj-database-url module:
import dj_database_url DATABASES['default'] = dj_database_url.config() DATABASES['default']['ENGINE'] = 'django_postgrespool'
If you're using south:
SOUTH_DATABASE_ADAPTERS = { 'default': 'south.db.postgresql_psycopg2' }
Everything should work as expected.
Installing Django-PostgresPool is simple, with pip:
$ pip install django-postgrespool
Optionally, you can provide additional options to pass to SQLAlchemy's pool creation:
DATABASE_POOL_ARGS = { 'max_overflow': 10, 'pool_size': 5, 'recycle': 300 }
Here's a basic explanation of two of these options:
- pool_size – The minimum number of connections to maintain in the pool.
- max_overflow – The maximum overflow size of the pool. This is not the maximum size of the pool.
The total number of "sleeping" connections the pool will allow is pool_size
.
The total simultaneous connections the pool will allow is pool_size + max_overflow
.
As an example, databases in the Heroku Postgres starter tier have a maximum connection limit of 20. In that case your pool_size
and max_overflow
, when combined, should not exceed 20.
Check out the official SQLAlchemy Connection Pooling docs to learn more about the optoins that can be defined in DATABASE_POOL_ARGS
.
django-postgrespool currently supports Django 1.4 and greater. See this ticket for 1.3 support.