Я установил https://github.com/zhangi/django_db_pooling с Django 3.0.4, чтобы включить пул соединений с Gunicorn.
Вместо использования mysqlclient==1.4.6
мне пришлось переключиться на использование pymysql==0.9.3
для работы библиотеки и для ошибки с совместимостью я применил патч в этом посте https://adamj.eu/tech/2020/02/04/how-to-use-pymysql-with-django/:
import py mysql
...
DATABASES = {"default": {"ENGINE": "django .db.backends. mysql", "NAME": "testapp",}}
# Поддельная версия Py MySQL и установка как MySQLdb # https://adamj.eu/tech/2020/02/04/how-to-use-pymysql-with-django/ py mysql .version_info = (1, 4, 2, "final", 0) py mysql .install_as_MySQLdb ()
В соответствии с инструкциями библиотеки django_db_pooling
я применил конфигурацию следующим образом: import os import pymysql из django .core.wsgi import get_wsgi_application из django_db_pooling import пул
pymysql.install_as_MySQLdb()
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "xxxxx.settings")
application = get_wsgi_application()
pooling.set_pool_size(4)
pooling.apply_patch()
Однако, когда мой проект работает в gunicorn и пытается получить доступ к базе данных, я получаю следующие ошибки:
Traceback (most recent call last):
File "/home/simernes/workspace/myproject/env/lib/python3.7/site-packages/gunicorn/workers/sync.py", line 187, in handle_request
respiter.close()
File "/home/simernes/workspace/myproject/env/lib/python3.7/site-packages/django/http/response.py", line 253, in close
signals.request_finished.send(sender=self._handler_class)
File "/home/simernes/workspace/myproject/env/lib/python3.7/site-packages/django/dispatch/dispatcher.py", line 175, in send
for receiver in self._live_receivers(sender)
File "/home/simernes/workspace/myproject/env/lib/python3.7/site-packages/django/dispatch/dispatcher.py", line 175, in <listcomp>
for receiver in self._live_receivers(sender)
File "/home/simernes/workspace/myproject/env/lib/python3.7/site-packages/django_db_pooling/pooling.py", line 121, in recycle_old_connections
ConnectionHandler.connection_pool[alias].release(conn)
AttributeError: type object 'ConnectionHandler' has no attribute 'connection_pool'