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

时间:2009-06-13 00:42:23

标签: django postgresql transactions psycopg2 django-testing

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

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

有什么想法吗?

数据库是PgSQL 8.3,驱动程序是postgresql_psycopg2。 Django - trunk。

1 个答案:

答案 0 :(得分:3)

我说这是不可能的。据我所知,每个线程都有自己的PostgreSQL会话,可以同时运行。鉴于PostgreSQL是一个MVCC数据库,一个线程将无法访问其他更改,直到事务被提交 - 在Django 1.1 TestCase的情况下不会这样。 / p>

如果你需要测试同时运行的东西,我很确定你需要使用TransactionTestCase