Mysql Connection Pooling backend for Django 2.0+ using gevent, only supports Python 3.4 or newer. It works with gunicorn async worker via gevent.
This implimentation is based on django-db-geventpool(https://github.com/jneight/django-db-geventpool).
pip install django-mysql-geventpool
Add the 'django_mysql_geventpool' modules to the INSTALLED_APPS like this:
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django_mysql_geventpool',
# ...other installed applications...
)
Add MAX_CONNS to OPTIONS to set the maximun number of connections allowed to database (default=4)
DATABASES = {
'default': {
'ENGINE': 'django_mysql_geventpool.backends.mysql',
'NAME': 'dbname',
'USER': 'dbuser',
'PASSWORD': 'dbpassword',
'HOST': 'dbhost',
'PORT': 'dbport',
'OPTIONS': {
'MAX_CONNS': 20,
'MAX_LIFETIME': 5 * 60 # connection lifetime in seconds, and if set 0, unlimited persistent connections if usable. default is 0.
}
}
}