在Python / Django的共享线程之间的交易范围是什么? (PostgreSQL的)
-
13-09-2019 - |
题
是否有任何方式在一个基于Django的代码,以两个线程间共享同一个事务?
的问题是,我有1.1的TestCase(那些包裹个别测试到事务),其意在测试是在不同的线程[一种异步测试]运行的代码。因此,这些测试创建旨在通过本次线程使用的一些数据。很显然,因为这个数据是事务范围内创建的,它不是第二个线程可见。但由于本来应于PGSQL相同的连接(应该吧?)我希望有分享这一交易的范围,所以我的第二个线程可以访问内它被添加的数据?一个办法..
任何想法?
数据库是PGSQL 8.3,驱动程序是postgresql_psycopg2。 Django的 - 主干
解决方案
我说这是不可能的。据我所知,每个线程都有自己的PostgreSQL会话,以便能够同时运行。而鉴于PostgreSQL是一个 MVCC 数据库,一个线程将无法获得对方的变化,直到事务被提交 - 这不会是在Django 1.1 TestCase
的情况下
如果您需要测试并行运行的东西,我敢肯定,你需要使用的 TransactionTestCase
。
不隶属于 StackOverflow