4

マルチプロセッシング ライブラリを使用してサブ プロセスでデータベース呼び出しを行うと、このエラーが発生します。

訪問:パスティ

InternalError: 現在のトランザクションは中止され、トランザクション ブロックが終了するまでコマンドは無視されます

psycopg2これは、 のドライバーを使用して、Postgre データベースに送信されweb.pyます。

ただし、threading.Thread代わりに使用するとmultiprocessing.Process、このエラーは発生しません。
これを修正する方法はありますか?

4

1 に答える 1

8

マルチプロセッシングは、現在のプロセスをフォークすることによって(UNIXシステムで)機能します。既存のデータベース接続がある場合、これにより2つのプロセス(現在のプロセスと新しいプロセス)に同じデータベース接続が残ります。両方から使用しようとするのは悪いことです。代わりに、子プロセスで新しいデータベース接続を作成してください。

于 2010-02-05T19:51:05.300 に答える