Тестирование возможности параллелизма в приложении Django
Допустим, у меня есть приложение Django с именем MyApp
, в котором есть модель Django с именем MyModel
. У этой модели есть метод под названием process
. База данных - Postgresql, поэтому она позволяет выполнять параллельные запросы.
Мне нужно проверить, может ли метод MyModel.process()
выполняться одновременно без проблем.
Итак, в моих тестах, когда я делаю
class test_smtg(TestCase):
def setup(self):
self.my_model = MyModel()
self.my_model.save()
def test_single_processing(self):
self.my_model.process()
Он успешно обрабатывается. Однако, когда я делаю следующее:
import threading
class test_smtg(TestCase):
def setup(self):
self.my_model = MyModel()
self.my_model.save()
def test_concurrent_processing(self):
thread = threading.Thread(target=self.my_model.process)
thread.start()
Он сразу же сообщает мне об ошибке, например, что идентификатор my_model
не может быть найден в таблице myapp_mymodel
. Почему так? Почему программа не может увидеть объект в базе данных, работая в отдельном потоке? И что я могу сделать, чтобы проверить, работает ли параллелизм, не разрушая мои тесты?