是否有任何方式在一个基于Django的代码,以两个线程间共享同一个事务?

的问题是,我有1.1的TestCase(那些包裹个别测试到事务),其意在测试是在不同的线程[一种异步测试]运行的代码。因此,这些测试创建旨在通过本次线程使用的一些数据。很显然,因为这个数据是事务范围内创建的,它不是第二个线程可见。但由于本来应于PGSQL相同的连接(应该吧?)我希望有分享这一交易的范围,所以我的第二个线程可以访问内它被添加的数据?一个办法..

任何想法?

数据库是PGSQL 8.3,驱动程序是postgresql_psycopg2。 Django的 - 主干

有帮助吗?

解决方案

我说这是不可能的。据我所知,每个线程都有自己的PostgreSQL会话,以便能够同时运行。而鉴于PostgreSQL是一个 MVCC 数据库,一个线程将无法获得对方的变化,直到事务被提交 - 这不会是在Django 1.1 TestCase的情况下

如果您需要测试并行运行的东西,我敢肯定,你需要使用的 TransactionTestCase

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top