Ich habe folgende Konfiguration:Django save() Verhalten mit autocommit Transaktionen
- Mehrere Datenverarbeitung Arbeiter Konfiguration von django Ansicht
get_conf()
von http bekommen. - Konfiguration wird in django Modell mit MySQL/InnoDB Backend
- Konfigurationsmodell gespeichert hat
save()
Methode überschrieben, die Arbeiter Konfiguration
ich bemerkt habe nachladen erzählt, dass manchmal die Arbeiter nicht korrekt angeben, die geänderte Konfiguration erhalten. Insbesondere, wenn die Zeit für das erneute Laden der Konfigu- ration kürzer als gewöhnlich war, erhielten die Worker eine "alte" Konfiguration von get_conf()
(die letzte Änderung fehlte). Das in Django verwendete Transaktionsmodell ist der Standard-Autocommit.
Ich habe mit dem folgenden möglichen Szenario kommen, die das Verhalten verursachen könnte:
- Neue Konfiguration gespeichert wird
save()
kehrt aber MySQL/InnoDB noch verarbeitet die (Auto) verpflichten- Arbeiter gebootet und hTTP-Anforderung für neue Konfiguration
- MySQL (auto) begehen Oberflächen
Ist der Schritt 2 im obigen Szenario möglich? Das heißt, kann django Modell save()
zurückgeben, bevor die Daten tatsächlich in der DB festgeschrieben werden, wenn die Autocommit-Transaktionsmethode verwendet wird? Oder, um eine Ebene nach unten zu gehen, kann MySQL Autocommitting INSERT
oder UPDATE
Operation beenden, bevor das Commit abgeschlossen ist (Update/Einfügen sichtbar für andere Transaktionen)?
Verwenden Sie InnoDB oder MyISAM für Ihre Engine? – FlipperPA
InnoDB. Die Datenbank läuft auf Amazon RDS mit Standardkonfiguration.Es gibt einige große Tabellen, aber die Tabelle (n) im Zusammenhang mit diesem Problem sind klein (in der Größenordnung von 128 kb oder so) – jhonkola
Können Sie Autocommit nur für diesen Fall ausschalten? – sobolevn