Důvodem takového chování je trvalé připojování k databázi, které bylo představeno v Django 1.6.
Chcete-li zabránit chybě vypršení časového limitu připojení, měli byste nastavit CONN_MAX_AGE
v settings.py
na hodnotu, která je menší než wait_timeout
v konfiguraci MySQL (my.cnf
). V takovém případě Django zjistí, že připojení je třeba znovu otevřít dříve, než jej MySQL vyvolá. Výchozí hodnota pro MySQL 5.7 je 28 800 sekund.
settings.py
:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'CONN_MAX_AGE': 3600,
<other params here>
}
}
Dokumentace:https://docs.djangoproject.com/ cs/1.7/ref/settings/#conn-max-age
my.cnf
:
wait_timeout = 28800
Dokumentace:https://dev.mysql .com/doc/refman/5.7/en/server-system-variables.html#sysvar_wait_timeout