Как использовать постоянное соединение с БД в Django? - PullRequest
0 голосов
/ 04 декабря 2018

Для каждого запроса django создает новое соединение с БД даже после установки переменной CONN_MAX_AGE в моей конфигурации БД Django

Мои конфигурации -
python3.5 / Django2.05 / mysql-5.6

Это мои конфигурации БД -

 {'default': {
    'CONN_MAX_AGE': 500,
    'ENGINE': 'django.db.backends.mysql',
    'HOST': 'localhost',
    'NAME': DB_NAME,
    'OPTIONS': {},
    'PASSWORD': 'root',
    'PORT': '3306',
    'TEST': {'CHARSET': None, 'COLLATION': None, 'MIRROR': None, 
    'NAME': None},
    'TIME_ZONE': None,
    'USER': 'root'}}

Согласно документу: Документация Django , оно не должно создавать новое соединение, пока не истечет CONN_MAX_AGE.

Я проверяю, нажимая запрос get в пользовательском представлении и проверяя объект подключения, добавляя этот оператор -

from django.db import connections  
print (connections.all())  

В журнале отображается новый объект подключения, например, -

[INFO 2018-12-04 23:00:08,472 basehttp] "GET /health_check/ HTTP/1.1" 200 96
[<django.db.backends.mysql.base.DatabaseWrapper object at 0x7f2c5fb1a0b8>]
[INFO 2018-12-04 23:00:09,017 basehttp] "GET /health_check/ HTTP/1.1" 200 96
[<django.db.backends.mysql.base.DatabaseWrapper object at 0x7f2c5fa88d30>]

Еще одно наблюдениеis -
Заходя внутрь -
local / lib / python3.5 / site-packages / django / db / backends / mysql / base.py get_new_connection () вызывается для каждый запрос что, по моему мнению, не должно происходить.

Если эта интерпретация ведения журнала / отладки по имени объекта неверна, , тогда предложите, как я должен убедиться, что соединение с БД не будет созданона каждый запрос.
PS, я новичок в django

...