Совместное использование транзакций между потоками в Python / Django? (PostgreSQL) - PullRequest
3 голосов
/ 13 июня 2009

Есть ли способ разделить одну и ту же транзакцию между двумя потоками в коде на основе django?

Проблема в том, что у меня есть 1.1 TestCase (те, которые заключают отдельные тесты в транзакции), которые предназначены для тестирования кода, выполняющегося в другом потоке [разновидность асинхронного тестирования]. Таким образом, эти тесты создают некоторые данные, которые предназначены для использования этим вторым потоком. Очевидно, что поскольку эти данные создаются в области транзакции, они не видны второму потоку. Но так как это должно быть в основном то же соединение с PgSQL (не так ли?), Я надеюсь, что есть способ поделиться этой областью транзакции, чтобы мой второй поток мог получить доступ к данным, добавляемым в него?

Есть идеи?

База данных - PgSQL 8.3, драйвер - postgresql_psycopg2. Джанго - багажник.

1 Ответ

3 голосов
/ 13 июня 2009

Я бы сказал, что это невозможно. Насколько мне известно, каждый поток имеет свой собственный сеанс PostgreSQL для одновременной работы. А учитывая, что PostgreSQL является базой данных MVCC , один поток не будет иметь доступа к изменениям другого, пока транзакция не будет зафиксирована - чего не будет в случае Django 1.1 TestCase.

Если вам нужно протестировать данные, которые работают одновременно, я уверен, что вам нужно использовать TransactionTestCase.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...