Pregunta

Me he ido un mysql con Django bajo WSGI. Encontré entradas para este problema en StackOverflow, pero nada con Django específicamente. Google no ayuda, a excepción de las soluciones (como sondear el sitio web de vez en cuando, o aumentar el tiempo de espera de la base de datos). Nada definitivo. Técnicamente, Django y/o MySQLDB (estoy usando el último 1.2.3c1) deberían intentar una reconexión si el servidor colgaba la conexión, pero esto no sucede. ¿Cómo puedo resolver este problema sin soluciones?

¿Fue útil?

Solución

show variables like 'wait_timeout';

Esta es la configuración que devolverá el error de "MySQL desaparecido"
Contácalo a un valor muy grande para evitar que "desaparezca"
o simple re-ping la conexión mysql después de cierto período

Otros consejos

Los desarrolladores de Django dieron una respuesta breve para todas las preguntas como esta en https://code.djangoproject.com/ticket/21597#comment:29

  • Resolución establecida en wontfix

En realidad, este es el comportamiento previsto después del #15119. Vea ese boleto para la justificación.

Si toca este problema y no quieres entender lo que está pasando, no reabrieras este boleto, solo haz esto:

  • Solución recomendada: cierre la conexión con from django.db import connection; connection.close() Cuando sepa que su programa va a estar inactivo durante mucho tiempo.

  • Solución de mierda: aumente Wait_TimeOut para que sea más largo que el tiempo de inactividad máximo de su programa.

En este contexto, el tiempo de inactividad es el tiempo entre dos consultas sucesivas de bases de datos.

  • Puede crear middleware para ping () la conexión mySQL (que se volverá a conectar si se agotó) antes de procesar la vista

  • También puede agregar middleware para captar la excepción, volver a conectar y volver Efectos, que es una propiedad deseable, pero puede ser difícil de hacer, especialmente si escribe en un sistema de archivos y en su DB en su opinión).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top