2010-02-05 2 views
3

Я получаю эту ошибку при выполнении вызовов базы данных в подпроцессе с использованием многопроцессорной библиотеки.InternalError: текущая транзакция прерывается, команды игнорируются до конца блока транзакции

визит: Pastie

InternalError: current transaction is aborted, commands ignored until end of transaction block

это к базе данных Postgre, используя psycopg2 драйвер в web.py.

Однако, если я использую threading.Thread вместо multiprocessing.Process Я не получаю эту ошибку.
Любая идея, как исправить это?

ответ

7

многопроцессорные работы (в системах UNIX) путем разметки текущего процесса. Если у вас есть существующее соединение с базой данных, это оставит два процесса (текущий и новый) с тем же соединением с базой данных. Попытка использовать его из обоих - это плохо. Вместо этого создайте новое соединение с базой данных в дочернем процессе.