SqlAlchemy und Multiprocessing

8

Ich verwende SqlAlchemy, um eine Verbindung zu meinem Datenbank-Backend herzustellen, und verwende in meiner Python-Anwendung intensiv Multiprocessing. Ich kam zu einer Situation, die erfordert, eine Objektreferenz, die das Ergebnis einer Datenbankabfrage ist, von einem Prozess zu einem anderen zu übergeben.

Dies ist ein Problem, weil SqlAlchemy beim Zugriff auf ein Attribut des Objekts versucht, das Objekt in die aktuelle Sitzung des anderen Prozesses einzufügen, was mit einer Ausnahme fehlschlägt, weil das Objekt in einer anderen Sitzung angehängt ist:

%Vor%

Wie soll man mit dieser Situation umgehen? Ist es möglich, das Objekt von der ersten Sitzung zu trennen oder das Objekt ohne das ORM-verwandte Objekt zu klonen?

    
Manuel Faux 13.01.2011, 12:59
quelle

1 Antwort

13

Das ist eine schlechte Idee (tm).

Sie sollten kein statusbehaftetes Objekt zwischen Prozessen wie diesem freigeben (ich weiß, dass es verlockend ist), weil alle möglichen schlechten Dinge passieren können, da Sperr-Primitive nicht für mehrere Python-Laufzeiten geeignet sind.

Ich schlage vor, die Attribute, die Sie brauchen, aus dem Objekt zu nehmen, sie in ein Diktat zu stopfen und Senden Sie es über Prozesse mit Multiprocessing Pipes:

Ссылка

    
Rafael Ferreira 14.01.2011, 00:28
quelle