在 python/django 中的线程之间共享事务范围?(PostgreSQL)

Yur*_*kii 5 django postgresql transactions psycopg2 django-testing

有没有办法在基于 django 的代码中的两个线程之间共享相同的事务?

\n\n

问题是我有 1.1 的 TestCase(那些将单个测试包装到事务中的测试用例),旨在测试在不同线程中运行的代码[一种异步测试]。因此,这些测试创建了一些旨在供第二个线程使用的数据。显然,由于该数据是在事务范围内创建的,因此它对第二个线程不可见。但由于这基本上应该与 PgSQL 具有相同的连接(应该吗?)我希望有一种方法可以共享此事务范围,以便我的第二个线程可以访问其中添加的数据?..

\n\n

任何想法?

\n\n

数据库是PgSQL 8.3,驱动程序是postgresql_psycopg2。Django \xe2\x80\x94 主干。

\n

mik*_*ikl 5

我想说那是不可能的。据我所知,每个线程都有自己的 PostgreSQL 会话,以便能够并发运行。鉴于 PostgreSQL 是一个MVCC数据库,一个线程将无法访问另一个线程的更改,直到事务被提交 \xe2\x80\x93 ,而在 Django 1.1 中则不会TestCase

\n\n

如果您需要测试并发运行的内容,我很确定您需要使用TransactionTestCase.

\n