Powodem takiego zachowania jest uporczywe połączenie z bazą danych, które zostało wprowadzone w Django 1.6.
Aby zapobiec błędom przekroczenia limitu czasu połączenia, należy ustawić CONN_MAX_AGE
w settings.py
na wartość mniejszą niż wait_timeout
w konfiguracji MySQL (my.cnf
). W takim przypadku Django wykryje, że połączenie musi zostać ponownie otwarte przed zgłoszeniem go przez MySQL. Domyślna wartość dla MySQL 5.7 to 28800 sekund.
settings.py
:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'CONN_MAX_AGE': 3600,
<other params here>
}
}
Dokumentacja:https://docs.djangoproject.com/ pl/1.7/ref/settings/#conn-max-age
my.cnf
:
wait_timeout = 28800
Dokumentacja:https://dev.mysql .com/doc/refman/5.7/en/server-system-variables.html#sysvar_wait_timeout