2016-04-18 10 views
0

Eine meiner Methoden funktioniert nicht, wenn sie im atomaren Kontext ausgeführt wird. Ich möchte Django fragen, ob es eine Transaktion ausführt.Auf atomaren Kontext prüfen

Die Methode kann einen Thread oder einen Prozess erstellen und das Ergebnis in der Datenbank speichern. Dies ist ein bisschen seltsam, aber es gibt einen großen Leistungsvorteil, wenn ein Prozess verwendet werden kann.

Ich finde, dass vor allem Prozesse mit Django ein wenig skizzenhaft sind. Ich weiß, dass Django eine Ausnahme auslösen wird, wenn die Methode die Ergebnisse in einem Prozess speichert und die Methode im atomaren Kontext ausgeführt wird.

Wenn ich nach einem atomaren Kontext suchen kann, kann ich sofort eine Exception auslösen (anstelle von ungeraden Fehlern) oder die Methode erzwingen, nur einen Thread zu erstellen.

Ich fand die is_managed() Methode, aber nach this question wurde es in Django 1.8 entfernt.

Antwort

0

Nach this ticket gibt es mehrere Möglichkeiten, dies zu erkennen: not transaction.get_autocommit() (mit einer öffentlichen API) oder transaction.get_connection().in_atomic_block (mit einer privaten API).

+0

Whoops, ich habe das Ticket beobachtet, aber nach dem Kommentar # 2 aufgehört zu lesen. – Mikuz