Djangoベースのコードで2つのスレッド間で同じトランザクションを共有する方法はありますか?python/djangoのスレッド間でトランザクションスコープを共有していますか? (PostgreSQL)
問題は、別のスレッド[一種の非同期テスト]で動作しているコードをテストするための1.1のTestCase(個々のテストをトランザクションにラップするもの)があることです。したがって、これらのテストでは、この2番目のスレッドで使用する予定のデータがいくつか作成されます。明らかに、このデータはトランザクションスコープ内で作成されるため、2番目のスレッドからは見えません。それは基本的にPgSQLと同じ接続であるべきです(私はこのトランザクションスコープを共有する方法があるので、2番目のスレッドはその中に追加されているデータにアクセスできます)?
ご存じですか?
データベースはPgSQL 8.3です。ドライバはpostgresql_psycopg2です。 Django - トランク。
TransactionTestCaseが私を殺しています - なぜなら、何らかの理由でTRUNCATEが* forever *を実行しているからです... –
テストが終了する前に2番目のスレッドが停止しているかどうかチェックしましたか? MVCCごとに、PostgreSQLが切り捨てられたデータのコピーを格納しなければならないので、切り捨てがさらに遅く実行される可能性があります。 – mikl
hm、それは面白いです..すべてのアイデアは、生涯すべてのテストを通してバックグラウンドスレッドを止めることではありませんでした。この場合、それぞれのsetUpとtearDownで2番目のスレッドの開始と停止をそれぞれ検討することがあります。 –