内部错误:当前事务已中止,直到事务块结束后命令被忽略。

5

使用 multiprocessing 库在子进程中进行数据库调用时,我遇到了以下错误:

访问:Pastie

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

这是在 web.py 中使用 psycopg2 驱动连接到 Postgre 数据库时出现的。

然而,如果我使用 threading.Thread 而不是 multiprocessing.Process,就不会出现此错误。
您有什么解决方法吗?

1个回答

9

多进程在UNIX系统上的工作方式是通过复制当前进程。如果您有现有的数据库连接,这将使两个进程(当前进程和新进程)具有相同的数据库连接。尝试从两个进程中使用它是不好的。请在子进程中创建一个新的数据库连接。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接