InternalError: la transaction courante est annulée, les commandes ignorées jusqu'à la fin du bloc de transaction

j'obtiens cette erreur en faisant des appels de base de données dans un processus secondaire en utilisant la bibliothèque multiprocessing.

"151940920 De Visite": Pastie

InternalError: la transaction courante est annulée, les commandes ignorées jusqu'à ce que bloc fin de transaction

il s'agit d'une base de données Postgre, en utilisant psycopg2 driver dans web.py .

cependant si j'utilise threading.Thread au lieu de multiprocessing.Process je ne comprends pas cette erreur.

Une idée de comment résoudre ce problème?

3
demandé sur reVerse 2010-02-05 21:53:25

1 réponses

multiprocessing fonctionne (sur les systèmes UNIX) en bifurquant le processus en cours. Si vous disposez d'une connexion de base de données, cela laissera les deux processus (l'actuel et le nouveau) avec la même connexion à la base. Essayer de l'utiliser des deux est mauvais. Créez une nouvelle connexion de base de données dans le processus enfant à la place.

7
répondu Thomas Wouters 2010-02-05 19:51:05