sqlalchemy を使用してフェッチされたいくつかのオブジェクトでトレッドが機能するマルチスレッド アプリケーションがあります。オブジェクトは、スレッドがポーリングするスレッド キューに入れられます。
メインスレッドで私はこれをやっています:
feeds = db_session.query(Feed).filter(Feed.last_checked <= int(update_time)).all()
for feed in feeds:
self.feed_q.put(feed)
スレッドでは、フィード オブジェクトにいくつかの更新を行います。更新を行うと、時々これらの例外が発生し続けます。
ProgrammingError: (ProgrammingError) (2014, "Commands out of sync; you can't run this command now")
StatementError: Can't reconnect until invalid transaction is rolled back (original cause: InvalidRequestError: Can't reconnect until invalid transaction is rolled back)
これは、同じ DB セッションを共有するスレッドと関係があることは理解していますが、これを修正する方法がわかりません。