在使用多处理库的子进程中进行数据库调用时出现此错误。

访问:Pastie



这是一个 Postgre 数据库,在 psycopg2 中使用 web.py 驱动程序。

但是,如果我使用 threading.Thread 而不是 multiprocessing.Process 我不会收到此错误。
知道如何解决这个问题吗?

最佳答案

multiprocessing 通过 fork 当前进程来工作(在 UNIX 系统上)。如果您有一个现有的数据库连接,这将使两个进程(当前进程和新进程)具有相同的数据库连接。试图从两者中使用它是不好的。而是在子进程中创建一个新的数据库连接。

关于python - InternalError : current transaction is aborted, 命令被忽略,直到事务块结束,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2209560/

10-12 12:22