Frage

Ich habe eine MySQL mit Django unter WSGI weg. Ich habe Einträge für dieses Problem auf Stackoverflow gefunden, aber nichts mit Django speziell. Google hilft nicht, außer bei Problemumgehungen (wie von Zeit zu Zeit die Website zu befragen oder die Datenbank -Zeitüberschreitung zu erhöhen). Nichts definitives. Technisch gesehen sollten Django und/oder MySQLDB (ich verwende das neueste 1.2.3c1) eine Wiederverbindung, wenn der Server die Verbindung erhängt hat, dies geschieht jedoch nicht. Wie kann ich dieses Problem ohne Problemumgehungen lösen?

War es hilfreich?

Lösung

show variables like 'wait_timeout';

Dies ist die Einstellung wird den Fehler "MySQL Gone weg" zurückwerfen
Stellen Sie es auf einen sehr großen Wert ein, um zu verhindern, dass es "weggegangen" ist.
oder einfach die MySQL-Verbindung nach einem bestimmten Zeitraum wiederholen

Andere Tipps

Django -Entwickler gaben eine kurze Antwort für alle Fragen wie diese in https://code.djangoproject.com/ticket/21597#comment:29

  • Auflösung auf Wontfix

Tatsächlich ist dies das beabsichtigte Verhalten nach #15119. Sehen Sie dieses Ticket für die Gründe.

Wenn Sie dieses Problem treffen und nicht verstehen möchten, was los ist, öffnen Sie dieses Ticket nicht wieder, tun Sie dies:

  • Empfohlene Lösung: Schließen Sie die Verbindung mit from django.db import connection; connection.close() Wenn Sie wissen, dass Ihr Programm lange Zeit untätig sein wird.

  • Beschissene Lösung: Erhöhen Sie Wait_Timeout, damit es länger ist als die maximale Leerlaufzeit Ihres Programms.

In diesem Zusammenhang ist die Leerlaufzeit die Zeit zwischen zwei aufeinanderfolgenden Datenbankabfragen.

  • Sie können Middleware zu Ping () der MySQL -Verbindung (die wiederhergestellt werden, wenn sie zeitlich wieder verbunden ist), bevor Sie die Ansicht verarbeiten

  • Sie können auch Middleware hinzufügen, um die Ausnahme zu erfassen, die Ansicht wiederherzustellen und wiederzuholen (ich denke, ich würde die oben genannte Lösung als einfacher bevorzugen, aber sie sollte technisch funktionieren und leistungsfähig sein, wenn die Zeitüberschreitungen selten sind. Dies setzt auch davon aus, dass eine fehlgeschlagene Ansicht keine Seite hat Effekte, die eine wünschenswerte Eigenschaft sind, aber schwierig sein können, insbesondere wenn Sie in Ihrer Ansicht in ein Dateisystem sowie eine DB schreiben.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top