Причината за подобно поведение е постоянното свързване към базата данни, което беше въведено в Django 1.6.
За да предотвратите грешка при изчакване на връзката, трябва да зададете CONN_MAX_AGE
в settings.py
до стойност, която е по-малка от wait_timeout
в конфигурацията на MySQL (my.cnf
). В този случай Django открива, че връзката трябва да бъде отворена по-рано, отколкото MySQL я хвърля. Стойността по подразбиране за MySQL 5.7 е 28800 секунди.
settings.py
:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'CONN_MAX_AGE': 3600,
<other params here>
}
}
Документация:https://docs.djangoproject.com/ en/1.7/ref/settings/#conn-max-age
my.cnf
:
wait_timeout = 28800
Документация:https://dev.mysql .com/doc/refman/5.7/en/server-system-variables.html#sysvar_wait_timeout