Threaded Django-Task verarbeitet Transaktionen oder Datenbankverbindungen nicht automatisch?

Ich habe Django so eingerichtet, dass einige wiederkehrende Aufgaben in ihren eigenen Threads ausgeführt werden. Dabei ist mir aufgefallen, dass sie immer unvollendete Datenbankverbindungsprozesse zurücklassen (pgsql "Idle In Transaction").

Ich habe die Postgres-Protokolle durchgesehen und festgestellt, dass die Transaktionen nicht abgeschlossen wurden (kein ROLLBACK). Ich habe versucht, die verschiedenen Transaktionsdekoratoren für meine Funktionen zu verwenden, kein Glück.

Ich wechselte zur manuellen Transaktionsverwaltung und führte das Rollback manuell durch, was funktionierte, aber die Prozesse immer noch als "Leerlauf" beließ.

Also rief ich connection.close () an und alles ist gut.

Aber ich frage mich, warum das typische Transaktions- und Verbindungsmanagement von Django nicht für diese Thread-Aufgaben funktioniert, die vom Django-Hauptthread erzeugt werden.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage