Ich habe ein Django-Modell, das Werte in einem JSON-Feld gespeichert hat. aber einige der Werte müssen eindeutig sein, dafür habe ich eine Funktion check_unique(). aber diese Überprüfung schlägt fehl, wenn zwei Benutzer versuchen, den gleichen Wert zur gleichen Zeit zu speichern, seit check_unique() ausgeführt wurde, keiner der Werte in der Datenbank gespeichert ist und sie dann individuell korrekt sind. Es gibt eine Möglichkeit, dieses Verhalten zu vermeiden? Ich habe versucht, dies zu vermeiden mit trheadeing.Lock, aber Apache läuft in verschiedenen Prozessen und es funktioniert nicht in diesem Fall.Selbstausschluss Ausführung der Funktionen in Django
Außerdem möchte ich, dass die Prüfung auf Anwendungsebene (in Python) und nicht auf Datenbankebene sein würde.
der Code sieht wie folgt aus:
semaphore.claim()
try:
uniques = check_unique(self.answers)
if not uniques:
self.go_save()
semaphore.release()
return Response("All OK")
except Exception as e:
semaphore.release()
return e